配列(Dictionary)

Dictionaryのキーの大文字小文字の区別をしない【CompareModeプロパティ】【ExcelVBA】

構文

object.CompareMode CompareModeプロパティは、Dictionary でキーの大文字小文字の区別をする/しないを選択します。

定数説明
vbUseCompareOption-1Option Compare ステートメントの設定を使用
vbBinaryCompare0バイナリ比較(大文字小文字区別する)規定値
vbTextCompare1バイナリ比較(大文字小文字区別しない)
vbDatabaseCompare2Microsoft Access のみ

Dictionaryのキー(要素)を全て削除するサンプルコード

'参照設定 Microsoft Scripting Runtime
Public Sub sample()

    Dim dic As Dictionary
    Set dic = New Dictionary
    
    '■大文字小文字区別する場合
    dic.CompareMode = vbBinaryCompare
    
    dic.Add "ABC", "あああ"
    dic.Add "Abc", "あああ"
    dic.Add "ABC", "あああ"
    dic.Add "aBC", "あああ"
    dic.Add "ABC", "あああ"
    Debug.Print dic.Count   '5
    
    dic.RemoveAll
    
    '■大文字小文字区別しない場合
    dic.CompareMode = vbTextCompare
    
    dic.Add "ABC", "あああ"
    dic.Add "Abc", "あああ"     '実行時エラー457 このキーは既にコレクションに割り当てられています
    dic.Add "ABC", "あああ"  '実行時エラー457 このキーは既にコレクションに割り当てられています
    dic.Add "aBC", "あああ"  '実行時エラー457 このキーは既にコレクションに割り当てられています
    dic.Add "ABC", "あああ"    '実行時エラー457 このキーは既にコレクションに割り当てられています
    Debug.Print dic.Count   '1
    

End Sub

注意点

  • 既に要素があるDictionaryに対して、CompareModeを変更すると実行時エラーが出ます。
実行時エラー5 プロシージャの呼び出し、または引数が不正です。

関連記事

Dictionaryにキーと要素を追加する【Addメソッド】【ExcelVBA】 Dictionaryのキー(要素)を全て削除する【RemoveAllメソッド】【ExcelVBA】

コメント

タイトルとURLをコピーしました