Я столкнулся с этой странной проблемой с объектом Scripting.Dictionary в моем коде VBA.Я хочу продолжить перебирать словарь по всей его длине.Я могу добавить больше элементов в словарь в цикле, так что размер словаря изменяется, так сказать, динамически.Кажется, что он перебирает только то количество элементов, которые изначально были в словаре, а НЕ новые !!
Вот код:
'Recursively continue to get all dependencies
numberOfPreReqsToIterate = preReqGraph.Count - 1
For preReqCount = 0 To numberOfPreReqsToIterate
listOfPreReqs = preReqGraph.items
rowNumberOfDependency = Application.WorksheetFunction.Match(listOfPreReqs(preReqCount), Range("requirementNumber"), 0)
listOfPreReqsForCurrentPreReq = Application.WorksheetFunction.Index(Range("preReqList"), rowNumberOfDependency)
If listOfPreReqsForCurrentPreReq <> "" Then
preReqs = Split(listOfPreReqsForCurrentPreReq, ",")
'Add each prereq to dictionary
For i = 0 To UBound(preReqs)
'If prereq already exists implies cycle in graph
If preReqGraph.Exists(Trim(preReqs(i))) Then
MsgBox ("YOU HAVE A CYCLE IN PREREQUISTE SPECIFICATION!")
End
End If
'If not then add it to the preReqGraph. The value for the key is the key itself
preReqGraph.Add Trim(preReqs(i)), Trim(preReqs(i))
numberOfPreReqsToIterate = numberOfPreReqsToIterate + 1
Next i
End If
Next preReqCount
Концептуально я пытаюсь получить все«График» зависимостей, а также обнаружить цикл, если это вообще так.Я перебираю ячейки, чтобы найти этот график и посмотреть, существуют ли циклы.Мне нужно иметь возможность повторять все элементы в словаре как можно больше элементов.Но кажется, что Excel каким-то образом «прекомпилирует» цикл for, поэтому берется только исходная верхняя граница / предел, но не для новых!Я пытался взломать, и это то, что у меня есть ... но безрезультатно.
Есть идеи?
Прилагается образец листа Excel с фиктивными данными ...
![enter image description here](https://i.stack.imgur.com/cJNh1.jpg)
Для R4 preReqGraph должен содержать все от R8 до R17.Но то, что я получаю, это ТОЛЬКО один уровень, т.е. только R8 через R12 и R14 ... Я в тупике.Я даже пытался использовать LBound и UBound preReqGraph.items, но безрезультатно.