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 |
スポンサーリンク