Я не уверен, почему VB делает это, так как у меня нет большого опыта. В основном, когда я запускаю свой скрипт в первый раз, результат получается именно таким, как я ожидал, но во второй раз он выглядит совершенно неправильно.
Вот код:
'define queue type
Dim Queue As New Collection
'define job list
Dim JobList As New Collection
'loop parameters
Dim rng As Range, rng2 As Range
Dim rng_w As Range, rng_w2 As Range
Dim TimeRange As Double
'loop over list and get jobs at frequency
Dim i As Double
Dim j As Integer
Sub Generate_Queue()
ThisWorkbook.Sheets("AGV capacity").Activate
Set rng = Range("L6:L7")
Set rng2 = Range("M6:M7")
'fill JobList
Dim Frequencies As Range
Set Frequencies = rng
Dim Jobs As Range
Set Jobs = rng2
Dim dividend
TimeRange = ThisWorkbook.Sheets("AGV capacity").Range("O6") * 3600
For i = 1 To rng.Count
Set tmp = New Transport
tmp.Frequency = (TimeRange / Frequencies(i))
tmp.SourceDest = Jobs(i)
JobList.Add tmp
Next i
i = 1
'while loop over time range (e.g. 24 hours)
While i < TimeRange
'for loop over number of entries in job list
For j = 1 To JobList.Count
'check if i is mod Frequency, meaning it should be added to the queue
If ((i Mod JobList(j).Frequency) = 0) Then
Set tmp = New Transport
dividend = (i / JobList(j).Frequency)
tmp.Frequency = ((dividend * JobList(j).Frequency) / 3600)
tmp.SourceDest = JobList(j).SourceDest
Queue.Add tmp
End If
Next j
i = i + 1
Wend
ThisWorkbook.Sheets("order queue").Activate
Set rng_w = Range("A2", "A" & Queue.Count)
Set rng_w2 = Range("B2", "B" & Queue.Count)
i = 1
For i = 1 To 1000
rng_w(i).Value = ""
rng_w2(i).Value = ""
Next i
For i = 1 To Queue.Count
rng_w(i).Value = Queue(i).Frequency
rng_w2(i).Value = Queue(i).SourceDest
Next i
End Sub
Я работаю над двумя разными листами Excel, но прочитанные данные остаются одинаковыми на протяжении двух прогонов. Когда я смотрю разные коллекции, они изменяются с одним и тем же набором данных, а иногда даже создаются дважды! Исходя из других языков, я ожидал, что они будут удаляться при каждом запуске, но, похоже, это не так. Как я могу "сбросить" эти объекты?