Visual Basic/Dictionaries
Dictionary class provides some functions beyond those provided by Collection class. A dictionary is a list of key, value pairs. Unlike Collection, Dictionary class is only available via Microsoft Scripting Runtime, a reference to which needs to be added to your project in order to use the class.
Creating a dictionary:
Set Dict = New Dictionary Set Dict = CreateObject("Scripting.Dictionary") 'An alternative
Adding a key and an item to a dictionary:
Dict.Add "Key1", "Value1" Dict.Add "Key2", "Value2" Dict.Add Key:="Key3", Item:="Value3"
Accessing an item by key:
Value3 = MyDict.Item("Key3")
Accessing an item by index:
Index = 2 Counter = 1 For Each Key In Dict.Keys If Counter = Index Then FoundKey = Key FoundValue = Dict.Item(Key) Exit For End If Counter = Counter + 1 Next
Iterating through the keys:
For Each Key In Dict.Keys Value = Dict.Item(Key) Next
Iterating through the values:
For Each Value In Dict.Items '... Next
Removing an item:
Dict.Remove "Key3"
Removing all items or emptying:
Dict.RemoveAll
Size or number of elements:
Dict.Count
Testing for emptiness:
If Dict.Count = 0 Then '... End If
Changing the key of an item:
Dict.Key("Key1") = "Key1a"
Changing the value of an item:
Dict.Item("Key2") = "Value2a"
Testing for presence of a key:
If Dict.Exists("Key2") Then '.. End If
Using dictionary as a set:
- Associate the dummy value 1 with each element of the set.
- When adding an item, test for existence.
Set DictSet = New Dictionary DictSet.Add "Item1", 1 'DictSet.Add "Item1", 1 -- error: the item is already there If Not DictSet.Exists("Item1") Then DictSet.Add "Item1", 1 End If DictSet.Remove "Item1"