通過前面兩篇文章的學(xué)習(xí),我們已經(jīng)了解了Excel VBA的變量,知道了如何給變量賦值。下面,我們詳細(xì)談?wù)?/span>Excel中很重要的對象變量。
變量除了可以表示數(shù)值、字符串等外,還可以表示一個工作簿、一張工作表、一個單元格,這就是對象變量(Object類型的變量)。
聲明對象變量
對象變量的聲明沒有什么特殊之處,仍然是使用Dim語句或者Public語句。下圖1是一些常用的對象聲明示例:
圖1
注意:當(dāng)我們不知道對象變量的具體類型時(shí),可以將其聲明為通用的Object類型。
給對象變量賦值
對象變量的賦值與普通變量的賦值不同,必須使用關(guān)鍵字Set。
例如,使用下面的語句將變量rng聲明為Range對象:
Dim rng As Range
然后,使用下面的語句給變量rng賦值:
Set rng = Worksheets('Sheet1').Range('A1:B2')
現(xiàn)在,我們就可以使用變量rng來代表工作表Sheet1中的單元格區(qū)域A1:B2。
此時(shí),再運(yùn)行代碼:
rng.Value = '示例'
將在單元格區(qū)域A1:B2中輸入“示例”文本,如圖2所示。
圖2
注意:在給對象變量賦值時(shí),一定要加上關(guān)鍵字Set。很多代碼錯誤往往就是在給對象變量賦值時(shí)沒有使用Set。
給對象變量賦值的通用結(jié)構(gòu)為:
Set 對象變量名= 對象
使用對象變量的好處
仍然使用上面給單元格區(qū)域A1:B2輸入文本“示例”的例子。如果不使用對象變量,那么將使用下面的代碼來操作該區(qū)域:
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的單元格區(qū)域A1:B2中輸入文本“示例”,然后將字體加粗,字號大小調(diào)整為19號,將單元格背景色設(shè)置為黃色。
讓我們再來看看使用對象變量達(dá)到同樣效果的代碼:
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
代碼顯得更簡潔,似乎運(yùn)行的速度也加快了。因此,我們總結(jié)使用對象變量的好處有:
可以很好地簡化代碼,使代碼更容易閱讀。
可以提高代碼的執(zhí)行速度。在多次引用相同的對象時(shí),使用對象變量后,點(diǎn)運(yùn)算符的數(shù)目明顯減少,用于解析對象引用的時(shí)間也會減少,自然就提高了代碼的執(zhí)行速度。
方便地操作其他工作表或工作簿中的數(shù)據(jù)。例如,在操作當(dāng)前工作表的數(shù)據(jù)時(shí),我們要復(fù)制或使用其他工作表中的數(shù)據(jù),此時(shí),可以將其他工作表中的數(shù)據(jù)區(qū)域賦值給對象變量,就可以方便地使用了,而不用擔(dān)心代碼究竟在操縱哪個工作表。
方便創(chuàng)建新的對象實(shí)例。例如下面的代碼:
Sub CreateNewWorkbook()
'聲明工作簿和工作表對象變量
Dim wb As Workbook
Dim wks As Worksheet
'創(chuàng)建新的對象實(shí)例并賦值
Set wb = Workbooks.Add
Set wks =wb.Worksheets('Sheet1')
'對工作表進(jìn)行操作
wks.Name = '我的工作表' '重命名工作表
wks.Range('A1')= 'Test' '給工作表中的單元格A1填充值
End Sub
聯(lián)系客服