在 VBA 中建立和使用字典
- 前提條件
-
使用 VBA 建立
Dictionary
物件 -
使用 VBA 在
Dictionary
物件中新增專案 -
使用 VBA 返回
Dictionary
上的值 -
使用 VBA 更改
Dictionary
上的值 -
使用 VBA 計算
字典
中的專案 - 列印字典中的所有鍵和值
VBA 中的 Dictionary
物件與我們用來了解單詞含義的語言字典無關。
在 VBA 中,Dictionary
物件在某種程度上類似於 Collection
物件來儲存資料。主要區別在於 Collection
不能:
- 檢查一個專案是否在集合中
- 更改現有專案的值
當然,我們仍然可以使用 Collection
並建立解決此問題的解決方法,但 Dictionary
提供這些解決方案和預定義的方法。因此,Dictionary
可用於特定任務,尤其是在檢索某個專案時。
本文演示瞭如何建立和利用 Dictionary
物件在你的 VBA 程式碼中執行某些功能。
前提條件
Dictionary
物件不附帶 VBA 的預設庫。因此,在充分利用 Dictionary
物件之前,需要引用 Microsoft Scripting Runtime
庫,包括 Dictionary
物件。
-
開啟 Excel 檔案。
-
從
開發人員選項卡
中,開啟Visual Basic
編輯器。 -
從
工具
工具欄中,單擊參考
。 -
勾選
Microsoft Scripting Runtime
核取方塊。
現在一切就緒。
使用 VBA 建立 Dictionary
物件
現在 Microsoft Scripting Runtime
在 References
中,下面的程式碼塊將演示如何建立 Dictionary
物件。
從 Scripting.Dictionary
庫建立一個物件,然後將其初始化為一個新物件。
Sub DictionaryDemo()
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
End Sub
使用 VBA 在 Dictionary
物件中新增專案
語法:
[DictionaryObject].Add([Key], [Item])
引數:
[DictionaryObject] |
必需的。字典 的名稱 |
[Key] |
必需的。在 Dictionary 中引用 Item 的資料。 |
[Item] |
必需的。設定或返回 Dictionary 中 Item 的值 |
我們可以使用前面的程式碼塊將專案新增到 Dictionary
。名稱(Glen、Myla、Katrina、Jose)被新增為鍵,他們各自的年齡作為下面程式碼塊中的值。
Sub DictionaryDemo()
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
d.Add ("Glen", 25)
d.Add ("Myla", 49)
d.Add ("Jose", 58)
d.Add ("Katrina", 18)
End Sub
使用 VBA 返回 Dictionary
上的值
使用 Dictionary
,我們可以通過知道與它對應的鍵來返回一個值。
返回語法:
[Value] = [DictionaryObject](Key)
更改語法:
[DictionaryObject](Key) = [Value]
引數:
[DictionaryObject] |
必需的。字典 的名稱 |
[Key] |
必需的。在 Dictionary 中引用 Item 的資料。 |
[Value] |
必需的。設定或返回 Dictionary 中 Item 的值 |
使用語法,鍵 Myla
的值返回 49
。
Sub DictionaryDemo()
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18
Debug.Print d("Myla")
End Sub
輸出:
49
使用 VBA 更改 Dictionary
上的值
使用 Dictionary
,我們可以通過知道與之對應的鍵來更改值。
更改語法:
[DictionaryObject](Key) = [Value]
引數:
[DictionaryObject] |
必需的。字典 的名稱 |
[Key] |
必需的。Dictionary 中引用 Item 的資料 |
[Value] |
必需的。設定或返回 Dictionary 中 Item 的值 |
在下面的程式碼塊中,鍵 Myla
的值使用上面的語法從 49
更改為 50
。
Sub DictionaryDemo()
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18
d("Myla") = 50
Debug.Print d("Myla")
End Sub
輸出:
50
使用 VBA 計算字典
中的專案
我們可以使用 Count
方法返回 Dictionary
中所有元素的數量。
計數
語法:
[Value]= [DictionaryObject].Count
引數:
[DictionaryObject] |
必需的。字典 的名稱 |
[Value] |
返回 Dictionary 中的專案數 |
在下面的示例中,我們使用 Count
方法獲取 d
物件的內容。
Sub DictionaryDemo()
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18
Debug.Print "There are " & d.Count & " items in the Dictionary."
End Sub
輸出:
There are 4 items in the Dictionary.
列印字典中的所有鍵和值
下面的程式碼塊將使用迴圈列印 Dictionary
中的所有鍵和值。
Sub DictionaryDemo()
Dim d As Scripting.Dictionary
Set d = New Scripting.Dictionary
d.Add "Glen", 25
d.Add "Myla", 49
d.Add "Jose", 58
d.Add "Katrina", 18
Dim Key as Variant
For Each Key In d.Keys
Debug.Print Key, d(Key)
Next
End Sub
輸出:
Glen 25
Myla 49
Jose 58
Katrina 18