在 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