們已經了解了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 = “示例”
將在單元格區域A1:B2中輸入“示例”文本,如圖2所示。
圖2
注意:在給對象變量賦值時,一定要加上關鍵字Set。很多代碼錯誤往往就是在給對象變量賦值時沒有使用Set。
給對象變量賦值的通用結構為:
Set 對象變量名= 對象
使用對象變量的好處
仍然使用上面給單元格區域A1:B2輸入文本“示例”的例子。如果不使用對象變量,那么將使用下面的代碼來操作該區域:
Sub test()
Worksheets(“Sheet1”).Range(“A1:B2”).Value = “示例”
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 = “示例”
rng.Font.Bold = True
rng.Font.Size = 19
rng.Interior.Color = vbYellow
End Sub
代碼顯得更簡潔,似乎運行的速度也加快了。因此,我們總結使用對象變量的好處有:
可以很好地簡化代碼,使代碼更容易閱讀。
可以提高代碼的執行速度。在多次引用相同的對象時,使用對象變量后,點運算符的數目明顯減少,用于解析對象引用的時間也會減少,自然就提高了代碼的執行速度。
方便地操作其他工作表或工作簿中的數據。例如,在操作當前工作表的數據時,我們要復制或使用其他工作表中的數據,此時,可以將其他工作表中的數據區域賦值給對象變量,就可以方便地使用了,而不用擔心代碼究竟在操縱哪個工作表。
方便創建新的對象實例。例如下面的代碼:
Sub CreateNewWorkbook()
‘聲明工作簿和工作表對象變量
Dim wb As Workbook
Dim wks As Worksheet
‘創建新的對象實例并賦值
Set wb = Workbooks.Add
Set wks =wb.Worksheets(“Sheet1”)
‘對工作表進行操作
wks.Name = “我的工作表” ‘重命名工作表
wks.Range(“A1”)= “Test” ‘給工作表中的單元格A1填充值
End Sub