ExcelのVBA(マクロ)に用意されている辞書オブジェクト。KEY-VALUE形式で格納できるため、検索時のパフォーマンス向上にも繋がる辞書オブジェクトの宣言方法、使い方をご紹介致します(。・ω・。)
1. まずそもそも、辞書オブジェクトとは?
辞書オブジェクト、Dictionaryオブジェクトは、Java等にあるいわゆる連想配列です。配列と違い値まで見ずにKey Value形式で取得できるので、無駄なループが減る等の利点があります(。・ω・。)
2. 辞書オブジェクトのサンプルコード
辞書オブジェクトを宣言・作成するサンプルコード
辞書オブジェクトは、オブジェクト型で利用できます。また、辞書内を全て検索する際に利用する、For Eachループ用のキー格納変数もはじめに宣言しておきます。オブジェクト型の辞書に対し、Dictionaryを生成すれば準備完了です(。・ω・。)
'# 辞書変数宣言(パブリック変数) Public dic_sample As Object '# サンプル辞書情報格納用 Public var_key As Variant '# For Each変数格納用 '# 辞書の生成 Set dic_sample = CreateObject("Scripting.Dictionary")
辞書オブジェクトにデータを追加・削除
辞書にデータを追加する際は、[辞書名].Add [KEY], [VALUE] で追加できます。重複したキーは追加できないのでご注意下さい(ノд・。)
'# 辞書オブジェクトにデータを追加・削除 [辞書名].Add [KEY], [VALUE] '# 追加 [辞書名].Remove [KEY] '# 削除 '# サンプルコード dic_sample.Add "hoge","A" '# キーhoge:値Aを格納 dic_sample.Add "egg","B" '# キーegg:値Bを格納 dic_sample.Remove "hoge" '# キーhoge:値Aを削除
辞書オブジェクトのキー存在チェック
辞書に指定したキーが登録されているかというのもマクロで確認できます。辞書には重複したキーは追加できないので、データ追加するプログラム処理時にキーの存在チェックは入れておきましょう(。・ω・。)
'# 存在チェック [辞書名].Exists([KEY]) '# サンプルコード If Not dic_sample.Exists("hoge") Then '# キーhogeが存在していない時の処理を記載 End If
辞書オブジェクトのキーに紐づく値を取得
辞書オブジェクトのキーに紐づく値も取得できます。配列であれば1つずつループで回しで巡回探索が必要ですが、KEY VALUでは一発で取得できます(。・ω・。)
'# VALUE取得 [辞書名].Item([KEY]) '# サンプルコード dic_sample.Item("egg") '# 値Bを取得
辞書オブジェクト内のループ処理(For Each)
辞書内のオブジェクトを全操作する場合は、ForEachを利用します。複数キーがある場合でも、1つずつ処理を実施することがdケイます(。・ω・。)
'# 存在チェック For Each [キー格納変数] In [辞書名] ... Next [キー格納変数] '# 辞書のループ処理サンプルコード For Each var_key In dic_sample ... Next var_key
マクロの辞書配列をマスターして、各種プログラムを高速化していきましょう(。・ω・。)
Windows関連記事
Windows関連のその他記事もまとめてますので、是非お立ち寄りください(。・ω・。)
この記事へのコメントはありません。