' 空文字列と 数値 0 は区別される Set x = CreateObject("Scripting.Dictionary") x.Add "" , "A" x.Add 0 , "B" ' Empty は、空文字列や数値 0 と合致してしまう x.Add Empty, "C" '実行時エラー '457': このキーは既にこのコレクションの要素に割り当てられています。 Set y = CreateObject("Scripting.Dictionary") y.Add Empty, "D" y.Add "" , "E" '実行時エラー '457': このキーは既にこのコレクションの要素に割り当てられています。 Set z = CreateObject("Scripting.Dictionary") z.Add Empty, "F" z.Add 0 , "G" '実行時エラー '457': このキーは既にこのコレクションの要素に割り当てられています。
Dim a As Variant: a = 0 Dim b As Variant: b = "" Dim c As Variant: c = #12:00:00 AM# '「1899/12/30 00:00:00」 Dim d As Variant: d = False Dim e As Variant: e = Empty Debug.Print "a="; TypeName(a) 'Integer Debug.Print "b="; TypeName(b) 'String Debug.Print "c="; TypeName(c) 'Date Debug.Print "d="; TypeName(d) 'Boolean Debug.Print "e="; TypeName(e) 'Empty Debug.Print "*** 下記は False となる(空文字列は、数値ゼロとは別の値)" Debug.Print b = a '"" は 0 ではない Debug.Print b = c '"" は 正子 ではない Debug.Print b = d '"" は False ではない Debug.Print "*** 下記は True となる(Empty は、空文字列と数値ゼロの両方と同一視される)" Debug.Print e = a 'Empty は 0 と等しい Debug.Print e = b 'Empty は "" と等しい Debug.Print e = c 'Empty は 正子 と等しい Debug.Print e = d 'Empty は False と等しい Debug.Print "*** 下記は True となる(正子、False、数値 0 は、いずれも同一値とみなされる)" Debug.Print a = c Debug.Print a = d Debug.Print a = e Debug.Print c = d Debug.Print c = e Debug.Print d = e