Sub useobejct()
'声明对象变量
Dim MSheet As Object
'声明一个叫做MSheet的对象变量,未指定特定的对象类型
Dim MSheet1 As Worksheet
'声明一个叫做MSheet的工作表对象变量,仅仅是工作表类型
Dim MRange As Range
'声明一个叫做MRange的range对象变量
'如果事先没有声明对象变量,那么其数据类型在默认情况下是Variant类型
'对象变量赋值
'对变量进行赋值的语法: set 变量 = 表达式
'对象变量不存储数据,它指向数据的存储位置
Set MSheet = ThisWorkbook.Sheets("Sheet1")
'给对象变量MSheet赋值,这个值指向当前工作簿的工作表Sheet1
'如果忽略了关键字Set,VB将会显示一个错误信息——“运行时间错误91:对象变量或With块变量未设置”
Set MRange = ThisWorkbook.Sheets("Sheet1").Range("A1:A10")
'给对象变量MRange赋值,这个值指向工作表Sheet1的单元格区域A1:A10
'这句代码如果把MRange换成Msheet赋值是可以的(因为Msheet没有特定的对象类型),但是给Msheet1会报错,“类型不匹配”
'对象变量的使用
MSheet.Name = "WX公众号-VBA代码集锦"
'把MSheet的名字改成"WX公众号-VBA代码集锦",不需要写一大串地址,此时MSheet变为Sheets("VBA代码集锦")
MSheet.Name = "Sheet1"
'把MSheet的名字改成Sheet1,此时MSheet变为Sheets("Sheet1"),其实一直都是同一个Sheet1
MRange.Interior.Color = 65535
'工作表Sheet1的单元格区域A1:A10填充为黄色
MRange.Interior.ColorIndex = 0
或 MRange.Interior.Color = xlNone
'去除工作表Sheet1的单元格区域A1:A10的底色
'当对象变量不再需要时,给它赋值Nothing,释放内存和系统资源
'此时对象变量停止与任何特定对象的对象变量关联,防止意外地通过更改变量而更改对象
Set MSheet = Nothing
Set MRange = Nothing
'好处
'使用对象变量可以使代码更简洁,同时可加快代码的执行速度。
End Sub
联系客服