Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть объект / коллекция, которая будет создана в нижней части стека, и у меня есть программа глубиной 3 уровня, коллекция будет использоваться только на 3 (верхнем) уровне,первый элемент будет использован и удален из коллекции, но я хочу сохранить его для всей программы, так как на следующем шаге необходимо использовать следующий элемент в коллекции, пока все не будет выполнено.
Лучший способ сделать это - создать эту коллекцию в нижнем слое, где будет использоваться коллекция, и сохранить коллекцию, даже если коллекция выходит за рамки.
То, как я делаюэто сейчас - создать коллекцию на самом нижнем уровне и передать ее по цепочке, потому что, если я создам ее в верхнем слое, она будет удалена после того, как она выйдет из области видимости
Я чувствую, что должнабыть лучшим способом решить мою проблему, но я просто не могу ее найти.Кто-нибудь знает ответ?
Я просто настроил текст в Excel следующим образом:
(A) (1)
(B) (2)
(C) (3)
(D) (4)
(E) (5)
'The Code works, but what I am asking is it possible to dont pass dict through all those sub
Sub Main()
Static dict As New Dictionary
Dim x As Integer
Set dict = readrange
Do While x < 3
somesub dict
x = x + 1
Loop
End Sub
'----------------------- Следующий модуль ----------------------------------------------------
Sub somesub(dict As Dictionary) '<----------------------- Dont want this dict
'some code which doesnt not use the dict
Dictchange dict
End Sub
'----------------------- Следующий модуль ----------------------------------------------------
Sub Dictchange(dict As Dictionary) '<----------------------- Dont want this dict too
Cells(dict(dict.Keys(0)), 4) = "Done"
'Is it possible to call dict in Main without pass the chain
'I cant use public as in the real code, "somesub" and "Dictchange" are in different module
'I could use Global, but i always feel like it just a "Dirty" way to fix thing
dict.Remove dict.Keys(0)
End Sub
'----------------------- Следующий модуль ---------------------------------------------------
'In the real code, this is one function in a class Module
Function readrange() As Dictionary
Dim temp As New Dictionary
For i = 1 To 5
temp.Add Cells(i, 1).Value, Cells(i, 2).Value
Next i
Set readrange = temp
End Function
Надеюсь, это поможет