T
thorgan
Dear Group,
I am completely stumped by this. I am filling a dictionary and then
looping over an array made from its keys later. However, if I loop to
the count size of the dictionary I will hit an error. The reason seems
to be that the array that is made via the keys method, is one element
shorter than the dictionary count?
Sample code below:
Option Explicit
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'' INPUTS HERE ''
Public Const distance As Single = 26.1
Public lrods As Dictionary
Public lrods_1 As Dictionary
Public lrods_9 As Dictionary
Public worst As Integer
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub Identify_lrods()
Dim ws As Worksheet
Dim i As Integer
Set lrods = New Dictionary
Set lrods_1 = New Dictionary
Set lrods_9 = New Dictionary
'look at sheet 3
Set ws = ThisWorkbook.Worksheets("3")
'loop through cells till empty
i = 0
Do While IsEmpty(ws.Range("J" & 3 + i)) <> True
If ws.Range("P" & 3 + i) > (distance / 1000) And ws.Range("B" & 3
+ i) = 1 Then _
lrods_1.Add ws.Range("J" & CStr(3 + i)), ws.Range("P" & CStr(3
+ i))
If ws.Range("P" & 3 + i) > (distance / 1000) And ws.Range("B" & 3
+ i) = 9 Then _
lrods_9.Add ws.Range("J" & CStr(3 + i)), ws.Range("P" & CStr(3
+ i))
i = i + 2 'skip every second
Loop
Debug.Print "after filling dictionaries - the i value was", i - 2
Debug.Print "dictionary info", lrods_9.Count, UBound(lrods_9.Keys)
End Sub
Many thanks,
Tim
I am completely stumped by this. I am filling a dictionary and then
looping over an array made from its keys later. However, if I loop to
the count size of the dictionary I will hit an error. The reason seems
to be that the array that is made via the keys method, is one element
shorter than the dictionary count?
Sample code below:
Option Explicit
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'' INPUTS HERE ''
Public Const distance As Single = 26.1
Public lrods As Dictionary
Public lrods_1 As Dictionary
Public lrods_9 As Dictionary
Public worst As Integer
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub Identify_lrods()
Dim ws As Worksheet
Dim i As Integer
Set lrods = New Dictionary
Set lrods_1 = New Dictionary
Set lrods_9 = New Dictionary
'look at sheet 3
Set ws = ThisWorkbook.Worksheets("3")
'loop through cells till empty
i = 0
Do While IsEmpty(ws.Range("J" & 3 + i)) <> True
If ws.Range("P" & 3 + i) > (distance / 1000) And ws.Range("B" & 3
+ i) = 1 Then _
lrods_1.Add ws.Range("J" & CStr(3 + i)), ws.Range("P" & CStr(3
+ i))
If ws.Range("P" & 3 + i) > (distance / 1000) And ws.Range("B" & 3
+ i) = 9 Then _
lrods_9.Add ws.Range("J" & CStr(3 + i)), ws.Range("P" & CStr(3
+ i))
i = i + 2 'skip every second
Loop
Debug.Print "after filling dictionaries - the i value was", i - 2
Debug.Print "dictionary info", lrods_9.Count, UBound(lrods_9.Keys)
End Sub
Many thanks,
Tim