【エクセル】forループ中の変数の罠

エクセル プログラミング

例えば以下のようなコードを書いたとき。ぱっと見問題なさそうですが、注意しないといけない点があります。

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

コメント

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