【エクセルVBA】連想配列はDictionaryではなくコレクションを使うべき理由

エクセルVBAで連想配列といえばDictionaryが思い浮かぶ人も多いはず。

でも、Dictionaryを使うには、事前に「Microsoft Scripting Runtime」を有効化する必要があって不便です。特に配布して他の人が利用するような場合には、わざわざMicrosoft Scripting Runtimeを有効化してもらわなければなりません。

これでは、Dictionaryは連想配列として使い物になりません。

スポンサーリンク

Microsoft Scripting Runtimeを有効化しなくてもDictionaryを利用する方法も一応ある。

Microsoft Scripting Runtimeを有効化しなくてもDictionaryを利用する方法も一応あります。

Public Function Dict() As Dictionary
    Set Dict = CreateObject("Scripting.Dictionary")
End Function

Sub Sample() 
    Dim dict As Dictionary
    Set dict = Dict
    '以下、処理を記載・・・
End Sub

Public Function~End Functionを毎回記載した上で、Sub sample以下のようにDictionaryを使う方法です。

しかし、これは毎回、Public Function~End Functionを記載しなければならず、面倒です。

VBAでは連想配列代わりにCollectionを使うのがおすすめ

エクセルVBAでは連想配列代わりにCollectionを使うのが楽で便利でおすすめです。

Sub Sample()
    Dim dict As New Collection
    dict.Add Item:="item1",Key:="key1" 'dictに連想配列っぽくデータを入れる。
    dict.Add "item2", "key2"  'こんな書き方もある。
    MsgBox dict.Item("key1") 'item1が表示される。
    MsgBox dict.Item("key2") 'item2が表示される。
End Sub

こんな感じで簡単に連想配列っぽく使えます。

もちろん、わざわざ自作関数をつくる必要もありませんし、PHPやPython等の言語と比べても違和感ない感じに使えるので気に入っています。

もうVBAで連想配列を使いたいと思ったらCollection使う。でよいのでは???

コメント

  1. sima より:

    格納したキーで「アルファベット大文字小文字を区別」したいとき
    collectionでも、区別できますか?

    • ゆるり より:

      MSDNでは明言されてないですが、Collectionのキーは全角、半角、大文字、小文字を区別できなかったはずです!

お知らせ

羽織紐を手作りしてます!よろしければご覧ください!
  • 天然石 マグネット式羽織紐 #01 / 着物小物 / ブルーグリーン / 水晶
    天然石 マグネット式羽織紐 #01 / 着物小物 / ブルーグリーン / 水晶
  • 天然石 マグネット式羽織紐 #09 / 着物小物 / グレー / 高品質ルチルクォーツ
    天然石 マグネット式羽織紐 #09 / 着物小物 / グレー / 高品質ルチルクォーツ
  • 天然石 マグネット式羽織紐 #04 / 着物小物 / ネイビー
    天然石 マグネット式羽織紐 #04 / 着物小物 / ネイビー

お知らせ

羽織紐を手作りしてます!よろしければご覧ください!
  • 天然石 マグネット式羽織紐 #01 / 着物小物 / ブルーグリーン / 水晶
    天然石 マグネット式羽織紐 #01 / 着物小物 / ブルーグリーン / 水晶
  • 天然石 マグネット式羽織紐 #09 / 着物小物 / グレー / 高品質ルチルクォーツ
    天然石 マグネット式羽織紐 #09 / 着物小物 / グレー / 高品質ルチルクォーツ
  • 天然石 マグネット式羽織紐 #04 / 着物小物 / ネイビー
    天然石 マグネット式羽織紐 #04 / 着物小物 / ネイビー
タイトルとURLをコピーしました