例えば以下のようなコードを書いたとき。ぱっと見問題なさそうですが、注意しないといけない点があります。
itemに一度値が入ると、次のループに入っても値が保持されている点です。iも同様です。
他の言語に慣れていればこその落とし穴かと思います。
変数のスコープには注意しましょう。
Sub CheckAllKeysInCollection()
Dim myCollection As New Collection
Dim key As Variant ' キーの配列
' コレクションに値を追加
myCollection.Add "Value1", "Key1"
myCollection.Add "Value2", "Key2"
myCollection.Add "Value3", "Key1" ' 同じキー "Key1" を追加
' 全てのキーを確認
Dim item As Variant
Dim i As Integer
For i = 1 To myCollection.Count
key = myCollection(i)
On Error Resume Next
item = myCollection(key)
On Error GoTo 0
If Not IsEmpty(item) Then
Debug.Print "キー " & key & " は存在します。値: " & item
Else
Debug.Print "キー " & key & " は存在しません。"
End If
Next i
End Sub
コメント