VBAのDictionaryオブジェクトは、いわゆる「連想配列」である。

目次

Dictionaryの使い方

VBAでDictionaryオブジェクトを使用するには、2通りの方法がある。

CreateObjectでDictionaryオブジェクトを作成する方法を次に示す。

Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")

NewでDictionaryオブジェクトを作成する方法を次に示す。

Dim dict As New Scripting.Dictionary

NewでDictionaryオブジェクトを作成するには、事前に参照設定を行う必要がある。

Dictionaryの参照設定

NewでDictionaryオブジェクトを作成できるようにするには、事前に参照設定を行う必要がある。

  1. Microsoft Visual Basic for Applicationsの「ツール」メニューから「参照設定」をクリックする。

  2. 「参照可能なライブラリファイル」の「Microsoft Scripting Runtime」にチェックを入れる。

  3. OKボタンをクリックして、「参照設定」ダイアログを閉じる。

Dictionaryのプロパティ

Dictionaryオブジェクトには次のようなプロパティがある。

Dictionaryオブジェクトのプロパティ
プロパティ 説明
Count 連想配列に格納された項目の数
Item( key ) キーに関連付けられた項目
Key( key ) キー
CompareMode vbBinaryCompare(0) 大文字と小文字を区別する
vbBinaryCompare(1) 大文字と小文字を区別しない

Count

Countは連想配列に格納された項目の数を表すプロパティである。

Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")

dict.Add "key1", "value1"
dict.Add "key2", "value2"

keyarray = dict.Keys

For i = 0 To dict.Count - 1
    Debug.Print keyarray(i)
Next

Item

Itemはキーに関連づいた値を示すプロパティである。

dictionary.Item( key )

キーに関連づいた値を変更することもできる。

dictionary.Item( key ) = newitem
dictionary
ディクショナリオブジェクト
key
キー
newitem
変更後の値

Key

Keyはキーを変更するためのプロパティである。

dictionary.Key( key ) = newitem
dictionary
ディクショナリオブジェクト
key
キー
newitem
変更後のキー

Dictionaryのメソッド

Dictionaryオブジェクトには次のようなメソッドがある。

Dictionaryオブジェクトのメソッド
メソッド 説明
Add 連想配列に値を追加する
Exists( key ) 連想配列に指定したキーが存在すればTrue、存在しなければFalseを返す。
Items 連想配列の項目を0から始まる配列にして返す。
Keys 連想配列のキーを0から始まる配列にして返す。
Remove( key ) キーと項目のペアを削除する。キーが存在しない場合はエラー。
RemoveAll すべてのキーと項目を削除して初期化する。

Add

連想配列に値を追加するには、Addメソッドを使用する。

dictionary.Add key, item

追加しようとするキーが既に連想配列に存在する場合はエラーとなる。

dictionary
ディクショナリオブジェクト
key
キー
item
キーに関連付ける項目

Dictionaryオブジェクトにキーと値を追加するサンプルを次に示す。

Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")

dict.Add "key1", "value1"
dict.Add "key2", "value2"

For Each key In dict
    Debug.Print key
    Debug.Print dict.Item(key)
Next

Exists

指定したキーが連想配列に存在するかどうかを判定するにはExistsメソッドを使う。指定したキーが連想配列に存在すればTrueを返し、存在しなければFalseを返す。

dictionary.Exists( key )
dictionary
ディクショナリオブジェクト
key
キー

指定したキーがDictionaryに存在するかどうかを判定する例を示す。

Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")

For i = 1 To 10
    buf = Worksheets("foo").Cells(i, 1)

    If Not dict.Exists(buf) Then
        dict.Add buf, buf
    End
Next

Keys

連想配列を通常の配列に変換するには、Keysメソッドを使う。

dictionary.Keys
dictionary
ディクショナリオブジェクト

連想配列を通常の配列に変換する例を示す。

Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")

dict.Add "key1", "value1"
dict.Add "key2", "value2"

keyarray = dict.Keys

For i = 0 To dict.Count - 1
    Debug.Print keyarray(i)
Next

Remove

連想配列から指定したキーの項目を削除するには、Removeメソッドを使う。

dictionary.Remove( key )
dictionary
ディクショナリオブジェクト
key
キー

連想配列から指定したキーの項目を削除するサンプルを示す。

Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")

dict.Add "key1", "value1"
dict.Add "key2", "value2"

dict.Remove("key1")

For Each key In dict
    Debug.Print key
    Debug.Print dict.Item(key)
Next

RemoveAll

連想配列からすべての項目を削除して初期化するには、RemoveAllメソッドを使う。

dictionary.RemoveAll
dictionary
ディクショナリオブジェクト

連想配列を初期化する例を示す。

Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")

dict.Add "key1", "value1"
dict.Add "key2", "value2"

dict.RemoveAll

For Each key In dict
    Debug.Print key
    Debug.Print dict.Item(key)
Next
このエントリーをはてなブックマークに追加