在前面的内容中,我们看到了通过在对象之间加上句点可以逐步得到想要的对象,以及引用对象的省略写法。
在获得对象之后,我们就要对这个对象进行相应的操作。例如,给对象赋值,让对象做相应的动作,这些就要用到对象的属性和方法。
如何使用对象的属性和方法呢?仍然是用句点,例如:
Worksheets.Add
表示添加工作表。
Range(“A1”).Clear
表示完全清除单元格A1中的内容和格式。
Range(“A1”).Value
可以获得或设置单元格A1中的值。
Range(“A1”).Address
可以获得或设置单元格的地址表示。
……
于是,我们可以得到使用对象的属性和方法的规则:
规则3:对象.方法或者对象.属性
也就是通过在对象后加上句点来使用对象的属性和方法,如下所示。
看一看,与对象的引用相同,都是使用句点。
我们在编写VBA代码或查看别人编写的VBA代码时,会大量用到或看到这样的表示方法。实际上,这是VBA语言中最基础的结构,如下所示。
现在,我们已经知道了对象有属性和方法,以及表示对象的属性及其方法的语法,那么如何描述它们的属性或方法,具体告诉对象是什么或者该做些什么呢?这就要使用参数了。
对象方法的参数
有很多书中,经常使用踢球的例子。要踢的球是一个对象,它有一个方法,就是踢,使用上面的语法表示,就是:
球.踢
或者:
Ball.Kick
踢多高,向哪个方向去踢,这就是参数要描述的内容。也就是说,方法的参数告诉踢球的具体行为:
球.踢方向:=向左,高度:=3米
或者:
Ball.Kick Direction:=Left,Height:=3
在Excel VBA中,大多数对象的方法也带有参数,告诉该方法具体的行为,例如,在当前工作簿中添加工作表,使用Worksheets对象的Add方法,如果我们要将新工作表添加到名为Sheet1的工作表之后,就要使用Add方法的After参数,代码如下:
Worksheets.AddAfter:=Worksheets(“Sheet1”)
对象属性的参数
还是使用足球的例子。看到足球后,我们就知道这个球的颜色,大多数是白黑相间的颜色,假如白色有7块,黑色有6块。可以用下面的式子表示:
球.颜色(白色:=7,黑色:=6)
或者:
Ball.Color(White:=7,Black:=6)
在Excel中,不少属性也带有参数。例如,基于当前单元格A1向下偏移1行,向右偏移2列的单元格,代码表示如下:
Range(“A1”).Offset(RowOffset:=1,ColumnOffset:=2)
参数的表示方法
综合上述说明的关于表示对象方法或属性的参数的用法,可以总结出参数表示方法的规则如下:
规则4:参数名:=参数值
方法或属性的参数可能不止一个,各参数之间使用逗号(,)分隔开。
有些情况下,我们可以省略参数名,直接使用参数值,多个参数之间使用逗号(,)分隔。例如:
Range(“A1”).Offset(1, 2)
也表示基于当前单元格A1向下偏移1行,向右偏移2列的单元格。
注意,省略参数名虽然简便,但要严格按照参数的顺序来设置相应的参数值,即便有些参数的值无须设置,也要按其顺序使用逗号隔开。例如,基于当前单元格A1向右偏移2列的单元格:
Range(“A1”).Offset(, 2)
Range对象的Offset属性有两个参数,其顺序是:第一个参数RowOffset,第二个参数ColumnOffset,上面的代码中,虽然省略了第一个参数,但仍要使用逗号分隔。
如果加上参数名,则无须使用逗号:
Range(“A1”).Offset(ColumnOffset:=2)
因此,使用参数名加上:=设置参数是一种较好的编写代码的方法,不仅无须考虑参数的顺序,根据参数名也知道参数设置的具体含义。
对于方法的参数也是如此,在此不再赘述。
默认属性
对于对象的方法或属性来说,有些属性是默认的,也就是说,在我们没有设置属性时,对象就会自动表现出的行为。
例如,Worksheets对象的Add方法,如果我们不设置参数,执行下面的语句:
Worksheets.Add
默认为在当前工作表前添加一个工作表,新工作表插入到当前工作表的前面。
大多数情况下,我们会省略掉Range对象的Value属性,例如:
Range(“A1”).Value = “ExcelVBA”
与
Range(“A1”) = “ExcelVBA”
相同,将直接在单元格A1中输入文本“Excel VBA”。