Dictionary Object – Accessing all Keys & Items
In this article, You can get code to access a Dictionary object key & item in a loop.
There are 5 different methods to do this.
- Loop thru each Key by
- Directly accessing each key
- Using Index number
- Read each Item by
- Directly accessing each item
- Using each Key value
- Using Index number
1.1 Loop thru Keys in Dictionary
The keys in dictionary acts as an index for the objects stored in a dictionary.
Additional Note: Key strings are case sensitive. While accessing a key value “key1” if we use “kEy1” then we will get a mismatch.
But, now we are not going to access key directly. We will construct a for loop that will read each key in the order it is stored.
Sub dictionary() 'Define Data Type: 'To use dictionary object, 'Add refenrece to "Microsfot Scripting Runtime" from Toole->Reference Dim iDict As Scripting.dictionary Set iDict = New Scripting.dictionary 'Create a Dictioniary Object iDict.Add "apple", 1 iDict.Add "Orange", 222 iDict.Add "Grape", 5 iDict.Add "LEMON", 123 'Loop Thru each key For Each ikey In iDict.Keys Debug.Print ikey Next ikey End Sub
1.2 Access Dictionary Keys using Index Number
Replace the for each loop in the above code with this code.
This will look for each key using the index number.
Dictionaryobject.Count will give the number of elements in a dictionary. And the index starts from 0 (zero).
'Access each key using index number Dim i As Integer Debug.Print vbCrLf & "----------------------" For i = 1 To iDict.Count Debug.Print "Key(" & (i) & "): " & iDict.Keys(i - 1) Next i
The out from both the loops are the same. Both will display all the key elements in the dictionary in the immediate window.
2. Loop Thru Each Item in Dictionary Directly
We are done with Keys. Now, lets access each item.
Sub dictionary_items() 'Define Data Type: 'To use dictionary object, 'Add refenrece to "Microsfot Scripting Runtime" from Toole->Reference Dim iDict As Scripting.dictionary Set iDict = New Scripting.dictionary 'Create a Dictioniary Object iDict.Add "apple", 1 iDict.Add "Orange", 222 iDict.Add "Grape", 5 iDict.Add "LEMON", 123 'Loop Thru each Items directly Debug.Print vbCrLf & "----------------------" For Each itm In iDict.Items Debug.Print itm Next itm End Sub
2.2 Access dictionary Item using each of its Key
The previous loop accessed each item directly. Lets see how to read each of the items using its corresponding key value.
'Loop Thru Items using Keys For Each ikey In iDict.Keys Debug.Print iDict(ikey) 'Or Debug.Print iDict.Item(ikey) Next ikey End Sub
2.3 Read Dictionary Items using Index Number
There is no direct method to access a dictionary item using index. So, we are going to use the indirect method.
You can get each key using index number & with each key we can read each item.
The below loop using this logic to fetch items using index.
'Access each Items using index number Dim i As Integer Debug.Print vbCrLf & "----------------------" For i = 1 To iDict.Count Debug.Print "Item(" & (i) & "): " & iDict.Item(iDict.Keys(i - 1)) Next i End Sub