初めまして。
今年の4月に入社し、8月から現場に配属された新人エンジニアです。
配属と同時に今まで全く触ってこなかったVBAの言語を用いての開発などを行うことになりました。
今後、VBAの力をつけていく為にも、Qiitaで主にVBA関連の知識をアウトプットしていきます。
目次
1.本記事で分かること
2.Dictionaryオブジェクトとは
3.Dictionaryオブジェクトの使い方
4.まとめ
5.参考文献
1. 本記事で分かること
・Dictionaryオブジェクトのプロパティ・メソッド一覧
・VBAのDictionaryオブジェクトの使い方
2. Dictionaryオブジェクトとは
「データのキーとアイテムのペアを保存するオブジェクト」のこと
「辞書」、「連想配列」とも呼ばれます。
アイテムには任意の形式のデータを使用できます。
また各アイテムは一意のキーに関連付けられます。
※つまり、キーを重複させることはできません。
3. Dictionaryオブジェクトの使い方
1.宣言
Dictionaryオブジェクトは外部のライブラリ「Microsoft Scripting Runtime」を参照しています。
①CreateObjectを使う方法
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
②参照設定を使う方法
Dim dic As New Scripting.Dictionary
「ツール」→ 「参照設定」から「Microsoft Scripting Runtime」にチェックを入れる必要があります。
2. メソッド
メソッド一覧
引用:Microsoft公式ドキュメント https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/dictionary-object
使用例
Sub Sample_method()
Dim a, i, b
Dim dic As New Scripting.Dictionary
'Add 新しいキー/アイテムのペアを追加
dic.Add "りんご", "200" 'Key(果物名)、Item(値段)を追加
dic.Add "いちご", "400"
dic.Add "メロン", "1000"
'存在するかどうかブール値を返す
Debug.Print dic.Exists("メロン") '存在するキー
Debug.Print dic.Exists("梨") '存在しないキー
Debug.Print
'全てのキー/アイテムを取得、表示
a = dic.Keys '全てのキーを取得
b = dic.Items '全てのアイテムを取得
For i = 0 To dic.Count - 1
Debug.Print a(i) & ":" & b(i) & "円"
Next
Debug.Print dic.Item("メロン") & "円" '.Itemは省略可
Debug.Print
'指定のキー/アイテムのペアを削除
dic.Remove "いちご" 'Item(いちご削除)
'全てのキー/アイテムを取得、表示
a = dic.Keys '全てのキーを取得
b = dic.Items '全てのアイテムを取得
For i = 0 To dic.Count - 1
Debug.Print a(i) & ":" & b(i) & "円"
Next
'全てのキーアイテムのペアを削除
dic.RemoveAll
End Sub
実行結果
3. プロパティ
プロパティ一覧
引用:Microsoft公式ドキュメント https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/dictionary-object
使用例
Sub Sample_property()
Dim a, b, i
Dim dic As New Scripting.Dictionary
'文字列キーを比較するための比較モード設定
'Addされてないときに、TextCompareへの設定を行う
dic.CompareMode = TextCompare '大文字・小文字、ひらがな・カタカナ、全角・半角を区別しない
'デフォルト値はBinaryCompare(区別する)
'Add 新しいキー/アイテムのペアを追加
dic.Add "りんご", "200" 'Key(果物名)、Item(値段)を追加
dic.Add "いちご", "400"
dic.Add "メロン", "1000"
Debug.Print dic.Exists("めろん") 'TextCompareが設定されているためTrueを返す
'Dictionaryオブジェクトの項目の数を返す
Debug.Print dic.Count & "個"
'キーに基づいて、アイテムを返す
Debug.Print dic.Item("めろん") 'ここでもTextCompare発動
'キー、アイテムの値を更新
dic.Key("りんご") = "みかん"
dic.Item("いちご") = 600
'全てのキー/アイテムを取得、表示
a = dic.Keys '全てのキーを取得
b = dic.Items '全てのアイテムを取得
For i = 0 To dic.Count - 1
Debug.Print a(i) & ":" & b(i) & "円"
Next
End Sub
実行結果
4. まとめ
今後もVBAの学習の為に記事の投稿をしていきます。
ありがとうございました。
5. 参考文献