4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【VBA Dictionary オブジェクト】 使い方 まとめ

Last updated at Posted at 2023-09-13

初めまして。
今年の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」にチェックを入れる必要があります。

スクリーンショット 2023-09-10 214653.png

2. メソッド

メソッド一覧

引用:Microsoft公式ドキュメント https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/dictionary-object
20230910Dictionary_メソッド.png

使用例

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

実行結果

20230911メソッド実行結果.png

3. プロパティ

プロパティ一覧

引用:Microsoft公式ドキュメント https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/dictionary-object
20230910Dictionary_プロパティ.png

使用例

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

実行結果

スクリーンショット 2023-09-14 082315.png

4. まとめ

今後もVBAの学習の為に記事の投稿をしていきます。
ありがとうございました。

5. 参考文献

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?