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