Does VBA have dictionary structure? Like key<>value array?
Answers
Yes, VBA (Visual Basic for Applications) does have a dictionary structure that allows you to store key-value pairs. This can be achieved using the Dictionary
object from the Microsoft Scripting Runtime library.
Here’s how you can use it:
-
Enabling the Microsoft Scripting Runtime Library:
- In the VBA editor, go to
Tools
>References
. - Check the box for "Microsoft Scripting Runtime".
- In the VBA editor, go to
-
Using the Dictionary Object:
- Declare and create an instance of the Dictionary.
- Add key-value pairs, retrieve values, check for existence of keys, and perform other dictionary operations.
Here's an example code snippet demonstrating the use of a dictionary in VBA:
Sub DictionaryExample()
' Declare a dictionary object
Dim dict As Scripting.Dictionary
Set dict = New Scripting.Dictionary
' Add key-value pairs to the dictionary
dict.Add "Name", "John Doe"
dict.Add "Age", 30
dict.Add "Country", "USA"
' Retrieve values using keys
MsgBox "Name: " & dict("Name")
MsgBox "Age: " & dict("Age")
MsgBox "Country: " & dict("Country")
' Check if a key exists
If dict.Exists("Name") Then
MsgBox "Key 'Name' exists in the dictionary."
End If
' Remove a key-value pair
dict.Remove "Age"
' Iterate through the dictionary
Dim key As Variant
For Each key In dict.Keys
MsgBox key & ": " & dict(key)
Next key
' Clean up
Set dict = Nothing
End Sub
Key Methods and Properties of the Dictionary Object
- Add(key, item): Adds a new key-value pair to the dictionary.
- Exists(key): Checks if a key exists in the dictionary.
- Item(key) or dict(key): Retrieves the value associated with the specified key.
- Remove(key): Removes a key-value pair from the dictionary.
- RemoveAll(): Removes all key-value pairs from the dictionary.
- Keys: Returns an array of all the keys in the dictionary.
- Items: Returns an array of all the items in the dictionary.
- Count: Returns the number of key-value pairs in the dictionary.
By using the Dictionary object, you can efficiently manage collections of related data in your VBA projects.