Dictionary.Keys()可以在其自己的运行时重新计算吗?

时间:2019-06-25 17:43:15

标签: excel vba dictionary

假设在Dictionary方法的For Each循环中对某些Keys进行了修改(添加了元素),有没有办法确保该循环捕获所有元素?

使用代码可能更容易解释:

Sub DictionaryKeysCollectionTest()
    Dim a As Dictionary
    Set a = New Dictionary
    a.Add "b", 1
    a.Add "c", 2

    For Each k In a.Keys()
        Debug.Print "Key: " & k

        If k = "c" Then
            Debug.Print "1st count: " & a.Count
            a.Add "a", 0
            Debug.Print "2nd count: " & a.Count
        End If

    Next k
End Sub

这将输出:

Key: b
Key: c
1st count: 2
2nd count: 3

我们最终可以看到a被添加到字典中(我们看到.Count有所增加),但是循环没有抓住它(我们看不到任何{{ 1}}。我猜是因为我们在a存在之前先遍历了字典的那一部分。

是否可以在执行仍在该循环内时“重新计算” a部分,以便我也可以捕获键.Keys()

1 个答案:

答案 0 :(得分:0)

从评论看来,答案是

编辑:忽略错误的陈述。