基于同一个类创建的一系列对象在最初阶段具有完全相同的外观和特征。为了让对象区别于其他同类对象,可以通过设置对象的属性来改变对象所具有的特征。例如,在默认情况下,工作表中的单元格具有相同的行高、列宽、填充色。当改变某个单元格的行高、列宽、填充色后,该单元格的外观将不同于其他单元格。行高、列宽、填充色等就是单元格的属性。通过修改对象的属性,可以改变对象的外观或状态。本文将介绍VBA对象属性的引用和赋值的方法,还介绍了可返回对象的属性这一重要概念。
一、引用对象的属性
如果要引用一个对象的属性,可以使用以下格式:
对象的名称.对象的属性
下面的代码引用的是Application对象的Version属性。由于VBA具有自动弹出成员列表的功能,因此在输入一个正确的对象名称和一个英文句点后,将会自动弹出该对象包含的属性和方法的成员列表,如图1所示,使用方向键选择所需的属性,然后按Tab键将其输入到代码窗口中。
Application.Version
当然,也可以直接手动输入属性,但要确保不要出现拼写错误,否则在运行代码时会出现运行时错误。

图1
在VBA中不能直接运行引用了对象属性的语句,否则会出现编译错误。但是使用类似下面的语句,则可以正常运行该语句,并在对话框中显示对象的属性值。
MsgBox Application.Version
为了便于使用对象的属性值,可以将其赋值给一个变量,然后在后面的代码中使用该变量代替对象属性的引用,这样做不但减少了代码的输入量,还可以加快代码的运行速度。下面的代码将Excel程序的版本号赋值给名为strVer的变量。
strVer = Application.Version
二、设置属性的值
通过设置对象的属性,可以改变对象的特征。设置对象属性的方法与将对象的属性赋值给一个变量类似,只不过是相反的过程。要设置属性的值,首先使用上一节介绍的方法输入对象属性的引用,然后输入一个等号,在等号右侧输入要为属性设置的值。
案例:设置工作表的名称
下面的代码将InputBox函数的返回值赋值给Worksheet对象的Name属性,从而将用户输入的内容指定为当前活动工作表的名称。代码中的ActiveSheet引用当前活动的工作表,它是Application对象的一个属性。
Sub 设置工作表的名称() Dim strName As String strName = InputBox("请输入工作表的名称:") If strName <> "" Then ActiveSheet.Name = strName End Sub
下面的代码将数字100输入到当期活动工作表的A1单元格中:Range("A1").Value = 100
由于Value属性是Range对象的默认属性,因此在设置该属性时不需要输入Value,而使用下面的形式:Range("A1") = 100
虽然默认属性为代码的输入提供了方便,但是仍然建议输入完整的属性名,这样可使代码易于理解。
三、可返回对象的属性
很多对象的属性可以返回另一个对象,这句话看起来可能不容易理解。下面的代码用于设置A1单元格中的字体格式。Range是一个对象,Font是该对象的属性,但是在Font之后还有一个Name。Name是Font的属性吗?可是Font不是Range对象的属性吗?所以Font应该不会是对象,那么Name又是什么?对于没有太多Excel VBA编程经验的用户而言,这句代码很容易带来困惑。
Range("A1").Font.Name = "宋体"
这句代码中的Font既是属性,又是对象。首先,Range(“A1”).Font这部分中的Font是作为Range对象的属性出现的,用于设置Range对象的字体格式。然而Excel会在运行Range(“A1”).Font之后,通过Font属性返回一个Font对象,之后又为该对象使用了Name属性。因此,上面的代码相当于设置的是Font对象的Name属性,开头的Range(“A1”)部分只是限定了设置字体格式的是哪个单元格。
Excel VBA中的很多对象的属性都能返回另一个对象。换句话说,某个对象其自身是一个独立的对象,但同时它可能还会作为另一个对象的属性出现。
评论前必须登录!
注册