配列(Dictionary)

DictionaryにAddしていなくてもItemが追加される【ExcelVBA】

DictionaryにAddしていないのに、Itemが追加される

最近、VBA開発でハマったケースです。
VBAでDictionaryを使用した際、Addしていないのにitemが追加されている挙動が出ました。

存在しないキーに対して値を取得しようとしたことが原因

Dictionaryは存在しないKeyに対して値(Item)を取得しようとすると、Keyを作成する仕様があります
(バグではなく仕様です)

DictionaryにAddしていないのに、Itemが追加のサンプルコード

'参照設定 Microsoft Scripting Runtime
Public Sub sample()
    Dim dic As Dictionary
    Set dic = New Dictionary
    
    '■isEmptyで確認すると要素が存在しないと、勝手にAddされてしまう。
    If IsEmpty(dic("aaa")) Then
        Debug.Print "要素が存在しません"
    Else
        Debug.Print "要素が存在します"
    End If

    '■Existsで存在確認して回避する
    If dic.Exists("bbb") = False Then
        Debug.Print "要素が存在しません"
    Else
        Debug.Print "要素が存在します"
    End If
End Sub

関連記事

コメント

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