ray88’s diary

お仕事で困ったとき用の自分用の覚書

VBA Dictionaryの使い方

VBA 部品 Dictionary作成 - ray88’s diary
■プロパティ

プロパティ 説明
Count 連想配列に格納された要素の数
Item(key) キーに関連付けれられたアイテム
Key(Key) キー
CompareMode キーを区別する際に大文字小文字を区別するかを指定する

※CompareModeの設定値

設定値 意味
vbBinaryCompare(0) 大文字と小文字を区別(規定値)
vbTextCompare(1) 大文字と小文字を区別せず

※Dictionaryオブジェクトはキーを重複させることはできないが、CompareModeプロパティを使ってキーの大文字と小文字を区別するかどうか設定することができる。

■メソッド

メソッド 説明
Add Key,Item キーにアイテムを関連付けて追加
Exists(key) 指定したキーが存在すればTrueを返す
Items 連想配列のアイテムを配列にして返す。配列インデックス番号は0から
Keys 連想配列のキーを配列にして返す。配列インデックス番号は0から
Remove Key キーとアイテムのペアを削除
Remove All 全てのキーとアイテムを削除

■宣言方法

Dim 連想配列名 As Object
Set 連想配列名 = CreateObject(“Scripting.Dictionary”)

■サンプルコード

Option Explicit
Sub testDictionary()
    '------------------------------------------------------------
    'Dictionaryオブジェクトの宣言
    Dim myDic As Object
    Set myDic = CreateObject("Scripting.Dictionary")
    '------------------------------------------------------------
    'Dictionaryオブジェクトの初期化、要素の追加
    myDic.Add "プランA", 1000
    myDic.Add "プランB", 2000
    myDic.Add "プランC", 3000
    '------------------------------------------------------------
    Dim str As String, i As Integer
    'バリアント型配列を宣言
    Dim Keys() As Variant
    'バリアント型配列にディクショナリのキーを格納
    Keys = myDic.Keys
    '------------------------------------------------------------
    'Dictionaryオブジェクトの要素の参照
    For i = 0 To 2
        str = str & Keys(i) & " : " & myDic.Item(Keys(i)) & "円" & vbCrLf
    Next i    
    MsgBox str, vbInformation
End Sub

実行結果