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