次のコードがあります。
Dim dicMyHash As Dictionary
Dim rngMyRange As Range
' A1 is empty - although the outcome is the same in any case
Set rngMyRange = Range("A1")
Set dicMyHash = New Dictionary
dicMyHash.Add Key:=rngMyRange(1), Item:=0
Debug.Print dicMyHash.Exists(rngMyRange(1).Value) ' returns False
Debug.Print rngMyRange(1) = rngMyRange(1).Value ' returns True
この動作はやや予想外です。バックグラウンドで型キャストが行われていますか? rngMyRange(1).Value
プロパティは を返しますがvariant
、is はrngMyRange(1)
です。ただし、にキャストしても同じ結果が得られます。rngMyRange.item(1)
range
rngMyRange(1)
Variant
また、キーの追加は値によるものです (そのため、 のコピーがrngMyRange(1)
キーとして渡されます)。しかし、それでも.Exists
キーが見つからない理由がわかりません..
前もって感謝します!