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