VBA で辞書を作成して利用する
- 前提条件
-
VBA を使用して
Dictionaryオブジェクトを作成する -
VBA を使用して
Dictionaryオブジェクトにアイテムを追加する -
VBA を使用して
Dictionaryに値を返す -
VBA を使用して
Dictionaryの値を変更する -
VBA を使用して
Dictionaryのアイテムを数える - 辞書内のすべてのキーと値を出力する
VBA の Dictionary オブジェクトは、単語の意味を知るために使用する言語辞書とは関係ありません。
VBA では、Dictionary オブジェクトは、データの保存において Collection オブジェクトに似ています。主な違いは、Collection では次のことができないことです。
- アイテムがコレクションにあるかどうかを確認します
- 既存のアイテムの値を変更します
もちろん、引き続き Collection を使用してこの問題の回避策を作成できますが、Dictionary は事前定義されたメソッドを使用してこれらのソリューションを提供します。したがって、Dictionary は、特定のタスク、特に特定のアイテムを取得する場合に役立ちます。
この記事では、Dictionary オブジェクトを作成して利用し、VBA コードで特定の機能を実行する方法を示します。
前提条件
Dictionary オブジェクトには、VBA のデフォルトライブラリが付属していません。したがって、Dictionary オブジェクトを完全に利用する前に、Dictionary オブジェクトを含む Microsoft Scripting Runtime ライブラリを参照する必要があります。
-
Excel ファイルを開きます。
-
開発者タブから、Visual Basicエディターを開きます。 -
ツールバーの
ToolsからReferencesをクリックする。 -
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] |
必須。Dictionary の名前 |
[Key] |
必須。Dictionary 内で Item が参照されるデータ。 |
[Item] |
必須。Dictionary のアイテムの値を設定または返します |
以前のコードブロックを使用して、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] |
必須。Dictionary の名前 |
[Key] |
必須。Dictionary 内で Item が参照されるデータ。 |
[Value] |
必須。Dictionary のアイテムの値を設定または返します |
構文を使用すると、キー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] |
必須。Dictionary の名前 |
[Key] |
必須。Dictionary 内で Item が参照されるデータ |
[Value] |
必須。Dictionary のアイテムの値を設定または返します |
以下のコードブロックでは、上記の構文を使用して、キー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 を使用して Dictionary のアイテムを数える
Count メソッドを使用して、Dictionary 内のすべての要素の数を返すことができます。
カウント構文:
[Value]= [DictionaryObject].Count
パラメーター:
[DictionaryObject] |
必須。Dictionary の名前 |
[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