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. [PHP] 入力フォームのバリデーションチェックを実装する

    2016.05.09
  2. [Windows] コマンドプロンプトで簡単にファイル一覧を作成する方法!

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

    2018.08.08
  4. [CSS] CSSのみでデザインするおしゃれなヘッダー・見出し(h1~h6タグ)…

    2018.06.11
  5. [PHP] ソーシャルボタン自作!PHPでSNSのカウント数を取得する(Face…

    2017.11.25
  6. [jQuery] リアルタイムに入力フォームのバリデーションをチェックするコード…

    2018.08.09

コメント

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

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

CAPTCHA


New Article

  1. sangokutenbu_toronazonazo
  2. sangokutenbu_nikyo
  3. sangokutenbu_ranking
  4. sangokutenbu_bunou
  5. gintama
PAGE TOP