至此,我们已经了解了对象、属性和方法的基本概念,认识了Excel的对象模型以及常用的对象在VBA中的表示,以及如何使用对象的属性和方法,这些都是Excel VBA编程最基础的部分 。熟悉和了解这些知识,对进一步学习VBA编程很重要 。
为了进一步巩固已经学习的知识,我们引用Excel先生(Bill Jelen)的著作《VBA and Macros for Microsoft Excel》中的例子,稍作修改,再次形象化地说明相关的概念和表示对象的基础语法结构 。
假设我们使用VBA来玩足球,那么踢球的指令应该类似下面这样:
“Kick the Ball”(中文为:“踢球”)
这就是我们平时说话的方式,具有很明确的意义,句子中有动词(Kick)和名词(the Ball) 。还记得前面的系列文章中的VBA代码,也有动词(Add)和名词(Worksheets) 。
虽然说平时我们用于踢球的指令听起来已经很自然,但是VBA代码并不是这样来表示的 。如果使用VBA来踢足球,那么基础的语言结构应该是:
Ball.Kick
这里的名词(Ball),位于最前面,在VBA中,就是对象,也有动词(Kick)紧随在名词之后,在VBA中,就是方法 。
这也就是VBA中最基础的结构:
对象.方法(Object.Method)
如果使用VBA编写程序,就一定要习惯于这样的结构 。
接着来做假设 。在绿色的草地上,放在你面前的有5个球,分别是足球、篮球、棒球、保龄球和网球 。现在,你给足球队员发出一条指令:
Kick the soccer ball(中文为:踢足球)
如果你仅仅告诉他踢球(或者Ball.Kick),没有明确踢哪一个球,可能他就会踢离他最近的那一个,例如保龄球,这明显会出问题 。
对于任何名词或者对象,在VBA中,都会有一类对象集合 。看看Excel中,可以有一行,也可以有多行;可以有一个单元格,也可以有多个单元格;可以有一个工作表,也可以有多个工作表 。对象与对象集合的惟一不同之处就是需要在对象的名称后面加上一个表示复数的“s”,例如:
Workbook成为Workbooks
Worksheet成为Worksheets
Ball成为Balls
当所指的是某个对象集合时,就需要告诉VBA具体要操作的对象 。可以使用不同的方法 。
一种方法是使用数字来指明具体的对象:
Balls(2).Kick
然而,这种方式虽然可以达到目的,但也比较危险 。例如,可能最初代码工作得很好,但某个时候某人调整了球的顺序,那么Balls(2).Kick可能就变为踢到其他的球了 。
另一种方法是使用名称来指明具体的对象,这是一种比较安全的方式:
Balls(“Soccer”).Kick
【excelvba指令对象】很明确地知道是要踢足球 。
在Excel VBA中,对于大多数动词或者方法,都会有参数告诉如何执行动作,这些参数相当于副词 。你可能想把足球踢到左边并且是使劲踢:
Balls(“Soccer”).KickDirection:=Left,Force:=Hard
多数方法都有大量的参数告诉程序如何执行方法 。
在查看VBA代码时,当看到冒号和等号的组合时,就说明是使用参数描述动词如何执行动作 。(而对于属性来说,则是进一步描述形容词的特性)
有时,某个方法可能会有10个参数,其中有些参数是可选的,可能Kick方法有一个Elevation参数,使用下面的代码:
Balls(“Soccer”).KickDirection:=Left,Force:=Hard,Elevation:=High
这里容易让人搞糊涂 。每个方法的参数都有默认的顺序,如果你碰巧知道参数的位置,那么可以不使用参数的名称,下面的代码等效于上面的代码:
Balls(“Soccer”).Kick Left,Hard,High
这也可能影响我们对代码的理解,没有冒号和等号的组合,参数的含义就不那么明显了 。当然,知道参数的顺序,是可以理解其意思的,但大多数参数的顺序我们是无法全部记住的 。
推荐阅读
- 在对象中循环——For Each-Next结构的使用
- python如何实现对象与文本之间转换?python对象与文本转换的方式
- python如何查看对象的信息?python查看对象的信息方法是什么?
- 选择PowerPoint2010中窗格被遮挡的对象
- 什么是python中的series结构?如何创建python中的series对象?
- 怎么在WPS Office Word 文档中插入的对象
- 适合2.14情人节对对象发的说说 关于情人节处对象的句子
- pygame如何在主窗口中增加对象?pygame主窗口创建对象的方法
- python如何创建image对象?python创建image对象的方法
- AE如何制作空对象展示动画?AE制作空对象展示动画小技巧