EXCEL不仅具有强大的计算功能,且可通过Visual Basic编程,对Excel进行复杂、快速的操作,即所谓的宏功能.早期版本中,这部分功能是用VBA实现的.VBA是把Visual Basic语言进行适当改造而成的,基本上可以像使用Visual Basic那样使用VBA,只是不能脱离Excel环境.在新的版本中,已经用Visual Basic代替了VBA.这是由于新版本的Visual Basic语言加入了对EXCEL对象的支持.尽管如此,这毕竟是在特定环境中使用的,且这个环境又定义有自己的专用对象,所以这种编程会遇到以下几个不可回避的问题.为了便于下面的说明,我们仍将把用Visual Basic语言编写且针对Excel的程序称为VBA.
?1、 如何在VBA中使用工作表的单元格对象.
在工作表中,想使用哪个区域,或直接引用或通过名子引用都可以.例如求工作表Sheet1中的一个区域(A1:A10)的和,直接使用公式“=SUM(A1:A10)”即可,但在VBA程序中却不能这样直接引用,因为Visual Basic不认识用这种形式表示的是什么对象.不过Visual Basic中可以使用工作表对象Worksheets,利用这一点即可实现对工作表的操作.该对象之下还有更低层次的对象.所以再通过它还能引用比它层次更低的单元格对象Range.即单元格区域.其它对象引用也是以此类推.为直观理解这一问题,请用一个小程序验证一下.如果你事先在Sheet1表中的(A1:A10)区域已存放有数据的话,就可以输入下面的程序开始试验:
Sub 试验宏1()
x = WorksheetFunction.Sum(Worksheets("Sheet1").Range("A1:A10"))
‘等号前面的x是存放计算结果的变量.
MsgBox x ‘显示计算结果的对话框
End Sub
执行这个程序,结果x将会显示在对话框中.
?从程序中Sum函数的括号中可以很明显地看到程序是逐层引用对象的,先是WorkSheets对象,括号中的参数"Sheet1"是真正被使用到的工作表;接着用一个圆点引用更低一级的单元格对象,括号中的参数"A1:A10"也是我们真正要处理的区域.注意对参数加双引号是必需的,不能省掉.
?那么等号后面的WorksheetFunction是什么作用呢?这就是我们将要说到的第二个问题.
?二、如何在VBA中使用工作表函数
上面已经解决了怎样使用单元格对象的问题,函数对象又怎样使用呢?与单元格对象能在工作表中直接使用而不能在Visual Basic语句中直接使用一样,工作表函数也是可 苯邮褂迷诠ぷ鞅碇卸?荒苤苯邮褂迷? Visual Basic 语句中.要想将工作表函数使用在Visual Basic语句中, 需要通过WorksheetFunction对象引用.经这样变通后,大部分的工作表函数就能在Visual Basic语句中使用了。例如上面的Sum函数就是一个工作表函数,当直接使用它而不在前面加WorksheetFunction“修饰”的时候,程序一执行就会提示"函数或过程没有定义!",解决的办法就是像前面例子中那样在Sum前面加上"WorksheetFunction".也就是说,通过这个对象,才能进一步再向下引用比它层次更低的对象Sum.如果你已经熟悉Visual Basic语言,并对面向对象编程有所了解的话,这些知识只是小菜一碟!
?三、如何区分哪些是工作表函数
要查看哪些工作表函数能用在Visual Basic中,请在Excel97的帮助文件中找到:"Microsoft Excel Visual Basic中可用的工作表函数列表"查阅.应说明的是,有些工作表函数在 Visual Basic 中根本用不上,这里不作讨论。也会遇到这种情况:实现某一功能的函数在Visual Basic中和工作函数表中都能找到,不同的只是名字有区别.这时候只要允许,就应优先使用Visual Basic中的函数.虽然使用工作表函数也合法,但毕竟显得更麻烦一些. |