VBAの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オブジェクトを作成するには、事前に参照設定を行う必要がある。
NewでDictionaryオブジェクトを作成できるようにするには、事前に参照設定を行う必要がある。
Dictionaryオブジェクトには次のようなプロパティがある。
プロパティ | 説明 |
---|---|
Count | 連想配列に格納された項目の数 |
Item( key ) | キーに関連付けられた項目 |
Key( key ) | キー |
CompareMode | vbBinaryCompare(0) 大文字と小文字を区別する vbBinaryCompare(1) 大文字と小文字を区別しない |
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はキーに関連づいた値を示すプロパティである。
dictionary.Item( key )
キーに関連づいた値を変更することもできる。
dictionary.Item( key ) = newitem
Keyはキーを変更するためのプロパティである。
dictionary.Key( key ) = newitem
Dictionaryオブジェクトには次のようなメソッドがある。
メソッド | 説明 |
---|---|
Add | 連想配列に値を追加する |
Exists( key ) | 連想配列に指定したキーが存在すればTrue、存在しなければFalseを返す。 |
Items | 連想配列の項目を0から始まる配列にして返す。 |
Keys | 連想配列のキーを0から始まる配列にして返す。 |
Remove( key ) | キーと項目のペアを削除する。キーが存在しない場合はエラー。 |
RemoveAll | すべてのキーと項目を削除して初期化する。 |
連想配列に値を追加するには、Addメソッドを使用する。
dictionary.Add 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メソッドを使う。指定したキーが連想配列に存在すればTrueを返し、存在しなければFalseを返す。
dictionary.Exists( 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メソッドを使う。
dictionary.Keys
連想配列を通常の配列に変換する例を示す。
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メソッドを使う。
dictionary.Remove( 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メソッドを使う。
dictionary.RemoveAll
連想配列を初期化する例を示す。
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