们已经了解了Excel VBA的变量,知道了如何给变量赋值 。下面,我们详细谈谈Excel中很重要的对象变量 。
变量除了可以表示数值、字符串等外,还可以表示一个工作簿、一张工作表、一个单元格,这就是对象变量(Object类型的变量) 。
声明对象变量
对象变量的声明没有什么特殊之处,仍然是使用Dim语句或者Public语句 。下图1是一些常用的对象声明示例:

图1
注意:当我们不知道对象变量的具体类型时,可以将其声明为通用的Object类型 。
给对象变量赋值
对象变量的赋值与普通变量的赋值不同,必须使用关键字Set 。
例如,使用下面的语句将变量rng声明为Range对象:
Dim rng As Range
然后,使用下面的语句给变量rng赋值:
Set rng = Worksheets(“Sheet1”).Range(“A1:B2”)
现在,我们就可以使用变量rng来代表工作表Sheet1中的单元格区域A1:B2 。
此时,再运行代码:
rng.Value = https://www.i8ku.com/2021/“示例”
将在单元格区域A1:B2中输入“示例”文本,如图2所示 。

图2
注意:在给对象变量赋值时,一定要加上关键字Set 。很多代码错误往往就是在给对象变量赋值时没有使用Set 。
给对象变量赋值的通用结构为:
Set 对象变量名= 对象
使用对象变量的好处
仍然使用上面给单元格区域A1:B2输入文本“示例”的例子 。如果不使用对象变量,那么将使用下面的代码来操作该区域:
Sub test()
Worksheets(“Sheet1”).Range(“A1:B2”).Value = https://www.i8ku.com/2021/“示例”
Worksheets(“Sheet1”).Range(“A1:B2”).Font.Bold = True
Worksheets(“Sheet1”).Range(“A1:B2”).Font.Size = 19
Worksheets(“Sheet1”).Range(“A1:B2”).Interior.Color =vbYellow
End Sub
该段代码首先在工作表Sheet1的单元格区域A1:B2中输入文本“示例”,然后将字体加粗,字号大小调整为19号,将单元格背景色设置为黄色 。
让我们再来看看使用对象变量达到同样效果的代码:
Sub testUpdate()
Dim rng As Range
Set rng =Worksheets(“Sheet1”).Range(“A1:B2”)
rng.Value = https://www.i8ku.com/2021/“示例”
rng.Font.Bold = True
rng.Font.Size = 19
rng.Interior.Color = vbYellow
End Sub
代码显得更简洁,似乎运行的速度也加快了 。因此,我们总结使用对象变量的好处有:
可以很好地简化代码,使代码更容易阅读 。
可以提高代码的执行速度 。在多次引用相同的对象时,使用对象变量后,点运算符的数目明显减少,用于解析对象引用的时间也会减少,自然就提高了代码的执行速度 。
方便地操作其他工作表或工作簿中的数据 。例如,在操作当前工作表的数据时,我们要复制或使用其他工作表中的数据,此时,可以将其他工作表中的数据区域赋值给对象变量,就可以方便地使用了,而不用担心代码究竟在操纵哪个工作表 。
方便创建新的对象实例 。例如下面的代码:
Sub CreateNewWorkbook()
‘声明工作簿和工作表对象变量
Dim wb As Workbook
Dim wks As Worksheet
‘创建新的对象实例并赋值
【Excel VBA对象变量】Set wb = Workbooks.Add
Set wks =wb.Worksheets(“Sheet1”)
‘对工作表进行操作
wks.Name = “我的工作表” ‘重命名工作表
wks.Range(“A1”)= “Test” ‘给工作表中的单元格A1填充值
猜你喜欢
- Excel VBA变量和常量
- Excel VBA End With结构,专为对象而生
- Excel怎么轻松得到有规律的数字
- Excel VBA员工管理系统开发
- Excel VBA MsgBox函数
- Excel VBA Select Case结构
- Excel VBA解读有限次的循环
- Excel VBA对象模型
- excel函数获取重复次数最多的值
- excel函数获取重复数据出现的最大次数
