Dictionary オブジェクトにキー(key)を登録し、そのキー(key)に値(item)を関連付けることで、キー(key)やインデックス番号から値(item)を呼び出すことができるようになります。
Dictionary オブジェクトのキー(key)は重複不可の仕様のため、同じキー(key)を2つ以上登録することはできません。
また、キー(key)をセル値から指定する場合は、必ずセル番地の後ろに「.value」を付けなくてはいけません。(次項参照)
Dictionary オブジェクトにキー(key)を登録する方法には、Addメソッドを利用する方法、Itemプロパティを利用する方法の2つあります。
Addメソッドを利用する方法
メソッド | 説明 |
---|---|
Add key, item | 新しいキー(key)を登録し、値(item)を関連付けます。 (キーが既に存在する場合はエラーになります。) |
Dictionaryオブジェクト.Add キー, 値
↑Dictionary オブジェクトに キー(key)を登録し、そのキー(key)に値(item)を関連付けます。
Dictinary オブジェクトのインデックス番号は「0」から始まります。
Itemプロパティを利用する方法
プロパティ | 説明 |
---|---|
Item(key) | 【キー(key)が登録されている場合】 ・キー(key)に関連付けられた値(item)を取得します。 ・「Dictionaryオブジェクト.Item(key) =別の値」で、既存のitemを別の値に変更します。 【キー(key)が登録されていない場合】 新しいキー(key)を登録し、値(item)を関連付けます。 (キーが既に存在する場合でもエラーになりません。) いずれの場合も、「item」は省略可能。 |
Itemプロパティには、上記の通り色々な働きがあります。
キー(key)が登録されていない場合、新しいキー(key)を登録し、値(item)を関連付けます。
キー(key)が登録されている場合、既存値(item)が別の新しい値に上書きされます。
ですので、登録済のキーが存在する場合でもエラーが出ません。Existsメソッドであらかじめキー存在確認をする必要がありません。
処理するデータ群に、同じkeyのデータが2つ以上ある場合、既存値(item)が上書きされることを考慮して使用しなければいけません。
「item」は省略することができます。
↓Itemを省略しない場合
Dictionaryオブジェクト.item(キー)= 値
↓Itemを省略する場合
Dictionaryオブジェクト(キー)= 値
キー(key)・値(item)にRangeオブジェクトが登録されないための「.value」の必要性
キー(key)や値(item)に指定する値に配列ではなく、セルの値を指定する場合はセル番地の後ろに「.value」を付けなければいけません。
Dictionaryオブジェクト.Add range(”A1”).value, range(”B1”).value
Dictionary オブジェクトのキー(key)・値(item)には数値や値だけではなく、オブジェクトを指定することも可能なのです。「.Value」を省略してしまうと、Rangeオブジェクトがキー(key)・値(item)として登録されてしまいます。
複数の同じテキストをキー(key)を1つにまとめたかったのに、同じテキストのキー(key)が複数存在している場合は「.value」が抜けていることが原因です。
参考
Dictionary オブジェクト(連想配列) とは ビッグデータ高速処理を可能にする技 (Excel VBA)
セル範囲を一気に変数(配列)に入れる ~バリアント型(Variant)変数を配列として使用する~(Excel VBA)
重複しないユニークなリスト作成 ~Dictionaryオブジェクト(連想配列)を使う1~ (Excel VBA)
重複しないユニークなリスト作成 ~Dictionaryオブジェクト(連想配列)を使う2~ (Excel VBA)
Dictionary オブジェクト(連想配列) CreateObject関数を使う方法・ 参照設定を使う方法 違いを理解してエラー防止(Excel VBA)
Dictionary オブジェクトに新しくキー(key)を登録し、値(item)を関連付ける(Excel VBA)
■スポンサーリンク
■ランキングに参加しています。 ↓このブログを気に入っていただけましたら、ポチッとお願いします。 人気ブログランキングへ