HOWTO · VBA

VBA で辞書を作成して利用する

このチュートリアルでは、VBA で辞書を宣言して利用する方法を示します。

このページの内容

VBA の Dictionary オブジェクトは、単語の意味を知るために使用する言語辞書とは関係ありません。

VBA では、Dictionary オブジェクトは、データの保存において Collection オブジェクトに似ています。主な違いは、Collection では次のことができないことです。

  1. アイテムがコレクションにあるかどうかを確認します
  2. 既存のアイテムの値を変更します

もちろん、引き続き Collection を使用してこの問題の回避策を作成できますが、Dictionary は事前定義されたメソッドを使用してこれらのソリューションを提供します。したがって、Dictionary は、特定のタスク、特に特定のアイテムを取得する場合に役立ちます。

この記事では、Dictionary オブジェクトを作成して利用し、VBA コードで特定の機能を実行する方法を示します。

前提条件

Dictionary オブジェクトには、VBA のデフォルトライブラリが付属していません。したがって、Dictionary オブジェクトを完全に利用する前に、Dictionary オブジェクトを含む Microsoft Scripting Runtime ライブラリを参照する必要があります。

  • Excel ファイルを開きます。
  • 開発者タブから、Visual Basic エディターを開きます。
  • ツールバーの Tools から References をクリックする。
  • 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] 必須。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