2014-01-29 70 views
12

在VB.NET中,我可以通过一个字典的键/值对迭代:我可以循环访问VBA集合中的键/值对吗?

Dictionary<string, string> collection = new Dictionary<string, string>(); 
collection.Add("key1", "value1"); 
collection.Add("key2", "value2"); 

foreach (string key in collection.Keys) 
{ 
    MessageBox.Show("Key: " + key + ". Value: " + collection[key]); 
} 

我知道在VBA我可以通过值的集合对象的迭代

Dim Col As Collection 
Set Col = New Collection 
Dim i As Integer 
Col.Add "value1", "key1" 
Col.Add "value2", "key2" 

For i = 1 To Col.Count 
    MsgBox (Col.Item(i)) 
Next I 

我也知道我用Scripting.Dictionary VBA对象来做这件事,但我想知道这是否可以用于集合。

我可以遍历VBA集合中的键/值对吗?

+1

据我所知,你,如果你想通过键/值对迭代can't..You应该使用'Dictionary' .. –

回答

26

您无法从集合中检索密钥的名称。相反,你需要使用一个Dictionary对象:

Sub LoopKeys() 
    Dim key As Variant 

    'Early binding: add reference to MS Scripting Runtime 
    Dim dic As Scripting.Dictionary 
    Set dic = New Scripting.Dictionary 

    'Use this for late binding instead: 
    'Dim dic As Object 
    'Set dic = CreateObject("Scripting.Dictionary") 

    dic.Add "Key1", "Value1" 
    dic.Add "Key2", "Value2" 

    For Each key In dic.Keys 
     Debug.Print "Key: " & key & " Value: " & dic(key) 
    Next 
End Sub 
+1

+1早期绑定:) –

+1

感谢您的早期绑定,新的词典没有工作。但是New Scripting.Dictionary确实:D Thx了。 – danger89

+0

在我的VBA脚本中不起作用。我需要一个lib或其他东西? –