分かりやすく、使いやすく。

Dictionary でキーの大文字と小文字を区別しないようにする方法

スポンサーリンク

Dictionary でキーの大文字と小文字を区別しないようにするには、CompareMode に vbTextCompare を指定します。

次のサンプルコードを実行すると、キーの重複でエラーとなります。

VBA(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Option Explicit
 
Sub test()
    'Dictionary の初期化
    Dim dicColors As Object
    Set dicColors = CreateObject("Scripting.Dictionary")
    
    'キーの大文字と小文字を区別しないようにする
    dicColors.CompareMode = vbTextCompare
    
    'キーと値を追加
    dicColors.Add "red", "赤1"
    dicColors.Add "Red", "赤2"
    dicColors.Add "REd", "赤3"
    dicColors.Add "RED", "赤4"
    dicColors.Add "rED", "赤5"
    dicColors.Add "reD", "赤6"
    
    'Dictionary をループして中身を表示
    Dim key As Variant
    
    For Each key In dicColors
         Debug.Print "キーの値:" & key; "、対応する値:" & dicColors(key)
    Next key
End Sub 

ちなみに大文字と小文字を区別するようにするには、次のように vbBinaryCompare を指定しますが、Dictionary オブジェクトにはデフォルトで vbBinaryCompare が設定されているので、大文字と小文字を区別する場合は、あえてこの記述をする必要はありません。

VBA(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Option Explicit
 
Sub test()
    'Dictionary の初期化
    Dim dicColors As Object
    Set dicColors = CreateObject("Scripting.Dictionary")
    
    'キーの大文字と小文字を区別するようにする
    dicColors.CompareMode = vbBinaryCompare
    
    'キーと値を追加
    dicColors.Add "red", "赤1"
    dicColors.Add "Red", "赤2"
    dicColors.Add "REd", "赤3"
    dicColors.Add "RED", "赤4"
    dicColors.Add "rED", "赤5"
    dicColors.Add "reD", "赤6"
    
    'Dictionary をループして中身を表示
    Dim key As Variant
    
    For Each key In dicColors
         Debug.Print "キーの値:" & key; "、対応する値:" & dicColors(key)
    Next key
End Sub 
スポンサーリンク
スポンサーリンク