[VBA] Collectionクラスを連想配列のように使う 〜 Collection::Add value, key

VBAのCollectionクラスを連想配列のように使うという話。
VBAの基本のデータ型はいまいち使いにくいですが、
平たくいうと、RubyでいうHashのようなものです。

順不同のデータを気軽にストックしておきたい場合に使います。

コード

Sub test_collection()
   Dim c As Collection
   Set c = New Collection
   c.Add 100, "a"
   c.Add 50
   c.Add item:=80, key:="p"

   Debug.Print "c(""a"") = " & c("a") '=> 100
   Debug.Print "c(2) = "     & c(2) '=> 50
   Debug.Print "c(""p"") = " & c("p") '=> 80
   Debug.Print "c(3) = "     & c(3) '=> 80

   c.Add item:=40, key:="p" ' run-time error
End Sub


CollectionクラスのAddメソッドは、
第2引数を指定すると、
それをキーにすることができます。

Add item:=value, key:=k
と書くこともできます。

同じキーでAddするとランタイムエラーになるのでご注意

ただし、すでに割り当てられているキーをAddしようとするとエラーになります。

実行時エラー'457':
このキーは既にこのコレクションの要素に割り当てられています。