連想配列(Dictionaryオブジェクト)は、連想配列や辞書とよばれるオブジェクトのひとつで、複数の便利なメソッドとプロパティをもっています。こちらの記事では、連想配列(Dictionaryオブジェクト)のメソッドやプロパティの使いかたを紹介しています。
なぜ、膨大な事務作業でも定時で退社できるのか。
実務をプロから学べる「ユースフル」の動画は永年見放題。Q&A機能で分からないを放置しないから安心。
詳しくは以下のリンクをクリック
Addメソッドは連想配列(Dictionaryオブジェクト)に要素を追加する
Addメソッドは、連想配列(Dictionaryオブジェクト)に要素を追加します。通常の配列と異なる点として、連想配列(Dictionaryオブジェクト)はキーとアイテムの要素のペアによる要素の指定ができます。
※連想配列(Dictionaryオブジェクト)についてはこちら
Addメソッドの構文
Addメソッドの構文
連想配列(Dictionaryオブジェクト).Add key,item
※要素は左からキー、アイテムの順番で指定します。
Addメソッドの構成要素と引数
Addメソッドの構成要素と引数
要素/引数 | 必須/任意 | 説明 |
---|---|---|
オブジェクト (object) |
必須 | 宣言したDictionaryオブジェクトの名前を指定します。 |
キー (key) |
必須 | 追加するキーの要素を指定します。 |
アイテム (item) |
必須 | 追加するアイテムの要素を指定します。 |
その他のポイント
追加するキー(key)が既に連想配列(Dictionaryオブジェクト)に存在する場合は、エラーが発生します。アイテム(Item)は重複登録することが可能です。
キー(key)は同じものを登録できないんだね。
Addメソッドをつかったサンプルマクロ
連想配列(Dictionaryオブジェクト)のAddメソッドをつかったサンプルマクロを紹介します。要素のもととなるデータによってイメージしやすいように、個別に指定した要素を追加する、セルに書かれたデータを要素として追加する、配列のデータを要素として追加する3つの種類のマクロを掲載しています。
Addメソッドで個別に指定した要素を追加する
以下のマクロは、Addメソッドをつかって宣言した連想配列(Dictionaryオブジェクト)である「MyDic」にキーとアイテムの要素を追加します。
サンプルコード
Option Explicit
Sub Dic_study1() '指定したデータを要素に追加する場合
'連想配列の宣言(参照設定「Microsoft Scripting Runtime」チェックしておく)
Dim MyDic As Dictionary
Set MyDic = New Dictionary
'Addメソッドで要素を追加する(要素は左からキー、アイテムの順番で指定する)
MyDic.Add "クワッス", "あお" '「クワッス」がキー、「あお」がアイテムになる
MyDic.Add "ホゲータ", "あか"
MyDic.Add "ニャオハ", "みどり"
'キーを指定することでアイテムを取り出すことができる
Debug.Print MyDic("クワッス") '実行結果>>>あお
Debug.Print MyDic("ホゲータ") '実行結果>>>あか
Debug.Print MyDic("ニャオハ") '実行結果>>>みどり
End Sub
実行結果
あお
あか
みどり
キーを指定することで、アイテムを取り出すことができました。
Addメソッドでセルに書かれたデータから要素を追加する
以下のマクロは、エクセルのシート1の表にあるデータを、Addメソッドを利用して連想配列(Dictionaryオブジェクト)の「MyDic2」にキーとアイテムの要素として追加します。
要素の取り出しについては4つの方法で書いていますが、どれも同じ結果になるので1つのみが実行されるようにしています。
エクセルのシート1にある表
サンプルコード
Option Explicit
Sub Dic_study2() 'セルデータから要素を追加する場合
'連想配列の宣言(参照設定「Microsoft Scripting Runtime」チェックしておく)
Dim MyDic2 As Dictionary
Set MyDic2 = New Dictionary
'シート1の表からデータを取得する
With ThisWorkbook.Sheets(1)
Dim i As Integer 'くり返し用の変数を宣言する
'2行目からA列の最終行(10行目)までくり返す
For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
'A列の値がキー、B列の値がアイテム
MyDic2.Add .Cells(i, 1).Value, .Cells(i, 2).Value 'セルの場所を適宜変更してください。
Next i
End With
'くり返しによる要素の取り出し(方法1)
Dim MyDicKey As Variant
For Each MyDicKey In MyDic2 'MyDic2は配列なので要素の分だけくり返す
Debug.Print MyDicKey; ":"; MyDic2(MyDicKey)
Next MyDicKey
''くり返しによる要素の取り出し(方法2)
'Dim j As Integer
'For j = 0 To UBound(MyDic2.Items) 'Itemsメソッドで配列の要素の分だけくり返す
' Debug.Print MyDic2.Keys(j); ":"; MyDic2.Items(j)
'Next j
'
''くり返しによる要素の取り出し(方法3)
'Dim k As Integer
'Do While k <= UBound(MyDic2.Items)
' Debug.Print MyDic2.Keys(k); ":"; MyDic2.Items(k)
' k = k + 1
'Loop
'
''くり返しによる要素の取り出し(方法4)
'Dim l As Integer
'Do Until l > UBound(MyDic2.Items)
' Debug.Print MyDic2.Keys(l); ":"; MyDic2.Items(l)
' l = l + 1
'Loop
End Sub
実行結果
クワッス:あお
ホゲータ:あか
ニャオハ:みどり
ウェルカモ:あお
アチゲータ:あか
ニャローテ:みどり
ウェーニバル:あお
ラウドボーン:あか
マスカーニャ:みどり
「MyDic2」に代入されたキーとアイテムをすべて取り出すことができました。
Addメソッドで配列のデータから要素を追加する
以下のマクロは、Addメソッドを利用して2つの配列データから連想配列(Dictionaryオブジェクト)である「MyDic3」にキーとアイテムの要素を追加します。キー、アイテムの要素のあつまりをArray関数をつかって配列データにし、それぞれ「KeyArray」、「ItemArray」の変数に代入しています。
サンプルコード
Option Explicit
Sub Dic_study3() '配列データから要素を追加する
'連想配列の宣言(参照設定「Microsoft Scripting Runtime」チェックしておく)
Dim MyDic3 As Dictionary
Set MyDic3 = New Dictionary
'キーの配列の宣言
Dim KeyArray As Variant
'Array関数つかってキーの配列をつくる
KeyArray = Array("クワッス", "ホゲータ", "ニャオハ", "ウェルカモ", "アチゲータ", "ニャローテ", "ウェーニバル", "ラウドボーン", "マスカーニャ")
'アイテムの配列の宣言
Dim ItemArray As Variant
'Array関数つかってアイテムの配列をつくる
ItemArray = Array("あお", "あか", "みどり")
'くり返し用の変数を宣言する
Dim i As Integer, j As Integer
'上記の配列の要素を連想配列に追加する
For i = 0 To UBound(KeyArray)
MyDic3.Add KeyArray(i), ItemArray(j)
j = j + 1 'jをインクリメント
If j > 2 Then 'jが3以上になれば0に戻す処理
j = 0
End If
Next i
'くり返しによる要素の取り出し
Dim MyDicKey As Variant
For Each MyDicKey In MyDic3 'MyDic2は配列なので要素の分だけくり返す
Debug.Print MyDicKey; ":"; MyDic3(MyDicKey)
Next MyDicKey
End Sub
実行結果
クワッス:あお
ホゲータ:あか
ニャオハ:みどり
ウェルカモ:あお
アチゲータ:あか
ニャローテ:みどり
ウェーニバル:あお
ラウドボーン:あか
マスカーニャ:みどり
「MyDic3」に代入されたキーとアイテムをすべて取り出すことができました。
Addメソッドは要素を追加するときに使うものだね。
コダマのもりブログはにほんブログ村に登録しています。
ブログの記事が役に立ったと感じて頂けたら、フォローお願いいたします。
コメント