こんにちは、blueです。
今回は「VBAプログラミングが一気に楽になる!初心者でも使えるVBAのDictionaryオブジェクトの使い方」を紹介します。
✓この記事の内容
- Dictionarオブジェクトについて
- Dictionaryオブジェクトの基本的な使い方
Dictionaryオブジェクトを使えば、手軽にキーと値を格納して管理できるため、VBAプログラミングが一気に楽になります。
本記事では、Dictionaryオブジェクトについて、基本的な使い方を詳しく解説しています。
VBAでのデータ管理に悩んでいる方は、ぜひお読みください。
Dictionaryオブジェクトについて
Dictionaryオブジェクトは、キーと値のペアを格納することができます。
索引(キー)をもとに内容を取り出せる為、辞書型とも呼ばれます。
また文字列から連想して値を取り出す為、連想配列とも呼ばれます。
この記事では、初心者でも使いやすいDictionaryオブジェクトの使い方を紹介します。
Dictionaryオブジェクトの基本的な使い方
参照設定の方法
まず、Dictionaryオブジェクトの基本的な使い方について説明します。
Dictionaryオブジェクトは、Microsoft Scripting Runtimeに含まれています。
VBAのコードでDictionaryオブジェクトを利用するには、
[ツール]ー[参照設定]-[Microsoft Scripting Runtimeにチェック]を入れておきます。
Dictionaryオブジェクトを利用する場合は、以下のように宣言します。
Dim dic As New Dictionary
キーと値の読み込み
Dictionaryオブジェクトに値を追加するには、Addメソッドを使用します。以下のコードは、Dictionaryオブジェクトにキーと値のペアを追加する例です。
dic.Add "key1", "value1"
dic.Add "key2", "value2"
dic.Add "key3", "value3"
Addメソッドの第一引数にキー、第二引数に値を指定することがポイントです。
値の出力
Dictionaryオブジェクトに追加された値を出力するには、以下のように記述します。
MsgBox dic("key1")
Dictionaryオブジェクトの()内にキーを指定するのがポイントです。
配列においてArray(0)とインデックスを記載する場合のと同じ書き方で出力することができます。
これにより、キーが”key1″に対応する値”value1″が表示されます。
ただ、キーが存在しない場合にはエラーが発生します。存在しないキーを指定しないように注意してください。
キーの存在判断
Dictionaryオブジェクトには、Existsメソッドを使用して、指定したキーが存在するかどうかを確認することができます。
以下のコードは、キーが存在する場合には”True”、存在しない場合には”False“を表示する例です。
MsgBox dic.Exists("key1")
MsgBox dic.Exists("key4")
Existsメソッドの引数にキーを指定するのがポイントです。
ExcistsメソッドはDicitonaryにおける必須メソッドです。キーが存在しない場合のエラー回避や重複処理に使えるのでぜひ覚えておいて下さい。
すべてのキーの出力
Dictionaryオブジェクトに格納されているすべてのキーを出力するには、Keysプロパティを使用します。
以下のコードは、Dictionaryオブジェクトに格納されているすべてのキーを表示する例です。
Dictionaryオブジェクト内の要素数を取得する為に一部Countメソッドを使用しています
- 一つずつ出力する場合1
Dim key As Variant
For Each key In dic.Keys
MsgBox key
Next key
- 一つずつ出力する場合2
For i=0 to dic.Count-1
MsgBox dic.Keys(i)
Next i
- 一度に全てを出力する場合(出力するセル範囲を個数と合わせる必要があります)
ThisWorkbook.Worksheets(1).Range("A1").Resize(1,dic.Count)=dic.Keys
Keysプロパティによって出力されるものは一次元配列です。
その為For Each~NextやFor ~Next構文を使ったり、個数を合わせたセルに代入することで出力することができます。
なおインデックスは通常の配列と同様0はじまりになるのと配列は横方向に伸びるので注意ください。
すべての値の出力
Dictionaryオブジェクトに格納されているすべての値を出力するには、Itemsプロパティを使用します。
以下のコードは、Dictionaryオブジェクトに格納されているすべての値を表示する例です。
- 一つずつ出力する場合1
Dim item As Variant
For Each item In dic.Items
MsgBox item
Next item
- 一つずつ出力する場合2
For i=0 to dic.Count-1
MsgBox dic.Items(i)
Next i
- 一度に全てを出力する場合(出力するセル範囲を個数と合わせる必要があります)
ThisWorkbook.Worksheets(1).Range("A1").Resize(1,dic.Count)=dic.Items
先ほどと同様にItemsプロパティによって出力されるものは一次元配列です。
出力は配列と同じ処理で可能です。
すべてのキーと値の出力
Dictionaryオブジェクトに格納されているすべてのキーと値を出力するには以下のコードを使用します。
Dim key As Variant
For Each key In dic.Keys
MsgBox key & ": " & dic(key)
Next key
これにより、キーとそのキーに対応する値が表示されます。
キーと値の削除
さらに、Dictionaryオブジェクトには、Removeメソッドを使用して、指定したキーとそのキーに対応する値を削除することができます。
以下のコードは、キーが”key1″に対応する値を削除する例です。
dic.Remove "key1"
Removeメソッドの引数にキーを指定するのがポイントです。なお戻り値はないので引数は()で囲いません。
以上がDictionaryオブジェクトの基本的な使い方についての説明でした。
今回のまとめ
本記事ではDictionaryオブジェクトの基本的な使い方を解説しました。
Dictionaryオブジェクトを使った実用的なコード例は次の記事で説明しますが、まずは基本的なメソッド、プロパティを理解していただければ幸いです。
以下ではExcel VBAを扱った記事について解説しています。「こんなこともできるのか」という内容を揃えていますのでぜひ参考にしてください。
VBAに関連する記事はこちら
【Excel VBA】Outlook内の受信メールや送信済みメール一覧を取得し、Excelに出力する
[Excel VBA]FileSystemObjectとは?初めての方向けにもわかりやすく説明します!
【PowerPoint VBA入門】PowerPoint VBAまとめ記事!文字列取得方法をわかりやすく説明します!
【SeleniumBasic】まとめ記事 SeleniumBasicでのスクレイピングについてどこよりも詳しく解説します
【VBA-API】OpenAIのGPT-3を使ってブログ記事を作成する(ChatGPT API2023年導入予定)
【VBA】重複のない乱数を作成するマクロを4つ紹介します!
コメント