Loading

[Excel VBA] マクロで辞書オブジェクト(KEY-VALUE)の使い方まとめ(Dictionary)

ExcelVBA Dictionaryオブジェクトの使い方

ExcelのVBA(マクロ)に用意されている辞書オブジェクト。KEY-VALUE形式で格納できるため、検索時のパフォーマンス向上にも繋がる辞書オブジェクトの宣言方法、使い方をご紹介致します(。・ω・。)

[Excel VBA] マクロで辞書オブジェクト(KEY-VALUE)の使い方まとめ(Dictionary)

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

マクロの辞書配列をマスターして、各種プログラムを高速化していきましょう(。・ω・。)

[パワプロ] サクセスチャレンジ攻略方法@あかつき大学付属高校

[パワプロ] パワプロの日(8/26)のイベント・キャンペーンまとめ

関連記事

  1. [Excel VBA] マクロで対象ブックの印刷総枚数を取得する

    2016.06.21
  2. [Linux] シェルスクリプトでフォルダ単位圧縮バックアップ & ロ…

    2018.01.09
  3. [Excel] 効率を大幅に上げる便利な関数使い方一覧

    2017.01.06
  4. [PHP] igo-phpを用いた形態素解析〜タグクラウド自作に向けて〜

    2016.05.05
  5. [PHP] 入力フォームのバリデーションチェックを実装する

    2016.05.09
  6. SSHでリモートコマンド実行、成功失敗の返り値(戻り値)取得方法

    2016.06.23

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


New Article

  1. sangokutenbu_sonken_01
  2. kijo_tekiro_01
  3. anohana
  4. sangokutenbu_kido_02
  5. HNIMGL9701_TP_V4
PAGE TOP