【EXCEL VBA】Dictionaryについてまとめて知りたい 基礎編(要素追加/取得/削除、要素数取得、ループ処理)

以前Collectionを紹介しました。Collectionは他言語のListクラスに近い存在でした。今回はHashtableに近いDictionaryを紹介します。

事前準備

Dictionaryを利用するには参照設定を行う必要があります。以下記事を参照して参照設定を事前に完了させてください。

要素追加(Add)

Add関数を使用します。第一引数にキー(文字列型)、第二引数に追加したい要素を記述します。要素については、文字列、数値、オブジェクト等を追加することができます。既に存在するキーに対してAdd関数を使用するとエラーとなります。

要素取得(item)

item関数を使用します。引数にキーをを指定することで、要素を取得することができます。存在しないキーを指定した場合は、Emptyが返却されます。

要素削除(Remove)

Remove関数を使用します。引数にキーを指定することで、キーに対する要素を削除することができます。削除後はDictionaryの要素数が1つ減ります。存在しないキーを指定した場合は、実行時エラーとなります。

要素数取得(Count)

Countプロパティを使用します。Dictionaryの要素数を取得することができます。

要素配列取得(キー、値)(keys, items)

キー配列を取得するにはkeys関数、要素配列を取得するにはitems関数を使用します。Dictionaryの一覧を取得したい場合などに使用します。

サンプルプログラム

Sub sample()
  Dim dic As New Dictionary
  
  dic.Add "Feb", "2月"
  dic.Add "Apr", "4月"
  dic.Add "Sep", "9月"
  dic.Add "Jan", "1月"
  
  Debug.Print dic.item("Sep")       ' 9月
  Debug.Print dic.item("Feb")       ' 2月
  
  ' Existsで存在チェック
  Debug.Print dic.Exists("Sep")     ' True
  Debug.Print dic.Count             ' 4 (要素数は4)
  
  ' Sepを削除
  dic.Remove ("Sep")
  Debug.Print dic.Exists("Sep")     ' False
  Debug.Print dic.Count             ' 3 (1つ削除したので要素数は3)
  Debug.Print dic.item("Sep")       ' 何も表示されない

  ' 初期化
  Set dic = New Dictionary
  dic.Add "Mar", "3月"
  dic.Add "May", "5月"
  dic.Add "Nov", "11月"
  dic.Add "Aug", "8月"

  ' Keysでキーの配列が返却
  Debug.Print Join(dic.Keys, ",")   ' Mar,May,Nov,Aug
  ' Itemsで値ーの配列が返却
  Debug.Print Join(dic.Items, ",")  ' 3月,5月,11月,8月

End Sub

出力結果

9月
2月
True
 4 
False
 3 

Mar,May,Nov,Aug
3月,5月,11月,8月