VBAで連想配列を使う

プロジェクトでVBAを書いていて,処理のロジック上,どうしても連想配列を使いたいなーと思いつつ,これまで使ったことがないので,VBAでは連想配列は使えないと思い込んでた.半ば諦めながらググってみたところ「Scripting.Dictionary」という型で連想配列が使えることがわかり感動!VBAの奥深さを改めて感じた1日だった.

適当に書いてみたサンプルコード.

Sub DictionarySample()

    'Dictionary型でオブジェクトを生成する
    '(参照設定で"Microsoft Scripting Runtime"が有効になってる前提)
    Dim HostIPMapping As Scripting.Dictionary
    Set HostIPMapping = New Scripting.Dictionary
    
    'ホスト名をキーとした連想配列としてIPアドレスを格納する
    HostIPMapping.Add "hostname1", "127.0.0.1"
    HostIPMapping.Add "hostname2", "127.0.0.2"
    HostIPMapping.Add "hostname3", "127.0.0.3"

    '連想配列の全ての要素を出力する
    For Each tmpHost In HostIPMapping
        Debug.Print tmpHost & " | " & HostIPMapping.Item(tmpHost)
    Next

End Sub

イミディエイトウィンドウの標準出力結果.

hostname1 | 127.0.0.1
hostname2 | 127.0.0.2
hostname3 | 127.0.0.3