Loading

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

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

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関連のその他記事もまとめてますので、是非お立ち寄りください(。・ω・。)

ふぇにば|PhoEniBiR

投稿者プロフィール

わくわくしてて偉い系VTuver ふぇにば です。
少しでもお役に立てておりましたら嬉しいです(。・ω・。)

関連記事

  1. 『Windows』コマンドプロンプトで簡単にファイル一覧を作成する方法!

    2017.11.08
  2. Vimを10倍かっこよく使いこなすためのコマンド集

    2016.05.12
  3. 『Excel VBA』マクロで月の日数を取得する(当月・前月・翌月)

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

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

    2017.01.06
  6. [PHP] date(): It is not safe to rely on …

    2018.08.08

コメント

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

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

CAPTCHA


New Article

  1. ChatGPT × StableDiffusion
  2. ChatGPT VS コンサルタント
  3. 注目したい5つのテクノロジートレンド2023
PAGE TOP