2014-01-29 9 views
12

In VB.NET, kann ich durch ein Wörterbuch der Schlüssel/Wert-Paare durchlaufen:Kann ich Schlüssel/Wert-Paare in einer VBA-Sammlung durchlaufen?

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]); 
} 

Ich weiß, in VBA ich durch die Werte eines Collection-Objekts laufen kann:

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 

I weiß auch, dass ich dies mit einem Scripting.Dictionary-VBA-Objekt mache, aber ich frage mich, ob das mit Sammlungen möglich ist.

Kann ich Schlüssel-Wert-Paare in einer VBA-Sammlung durchlaufen?

+1

Wie ich weiß, sollten Sie can't..You 'Dictionary' verwenden, wenn Sie durch Schlüssel/Wert-Paare iterieren wollen .. –

Antwort

26

Sie können den Namen des Schlüssels nicht aus einer Sammlung abrufen. Stattdessen müssen Sie ein Dictionary-Objekt verwenden:

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 für Frühe Bindung :) –

+1

Danke für die frühe Bindung, neues Wörterbuch hat nicht funktioniert. Aber New Scripting.Dictionary tat: D Thx wieder. – danger89

+0

funktioniert nicht in meinem VBA-Skript. Benötige ich eine Lib oder etwas? –

Verwandte Themen