在 VBA 中建立和使用字典

Glen Alfaro 2023年1月30日
  1. 前提條件
  2. 使用 VBA 建立 Dictionary 物件
  3. 使用 VBA 在 Dictionary 物件中新增專案
  4. 使用 VBA 返回 Dictionary 上的值
  5. 使用 VBA 更改 Dictionary 上的值
  6. 使用 VBA 計算字典中的專案
  7. 列印字典中的所有鍵和值
在 VBA 中建立和使用字典

VBA 中的 Dictionary 物件與我們用來了解單詞含義的語言字典無關。

在 VBA 中,Dictionary 物件在某種程度上類似於 Collection 物件來儲存資料。主要區別在於 Collection 不能:

  1. 檢查一個專案是否在集合中
  2. 更改現有專案的值

當然,我們仍然可以使用 Collection 並建立解決此問題的解決方法,但 Dictionary 提供這些解決方案和預定義的方法。因此,Dictionary 可用於特定任務,尤其是在檢索某個專案時。

本文演示瞭如何建立和利用 Dictionary 物件在你的 VBA 程式碼中執行某些功能。

前提條件

Dictionary 物件不附帶 VBA 的預設庫。因此,在充分利用 Dictionary 物件之前,需要引用 Microsoft Scripting Runtime 庫,包括 Dictionary 物件。

  • 開啟 Excel 檔案。
  • 開發人員選項卡中,開啟 Visual Basic 編輯器。
  • 工具工具欄中,單擊參考
  • 勾選 Microsoft Scripting Runtime 核取方塊。

現在一切就緒。

使用 VBA 建立 Dictionary 物件

現在 Microsoft Scripting RuntimeReferences 中,下面的程式碼塊將演示如何建立 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