Хорошо, я много поищу, нашел, поиграл и мало.Я не могу заставить эти петли работать полностью, я могу получить часть или другую, но не целую.Поскольку первый цикл работает нормально, то он становится шатким.
T
является местом назначения для выражения выражения t.Value = time1 - time2
Y
является установленным временем и датой, которое не изменяется = time1
X
является временем и датой и имеетбыть извлеченным из диапазона в том же столбце, что и соответствующий y
.x= time 2
Я загрузил соответствующий сегмент моей рабочей книги
https://docs.google.com/open?id=0BzGnV1BGYQbvMERWU3VkdGFTQS1tYXpXcU1Mc3lmUQ
Я играл с условными выходами, переставляя циклы for.Я даже подумывал попытаться пойти до тех пор, пока не заметил большую кучу тел, созданную самим ее упоминанием.
Я открыт и благодарен за любые советы или указания.Я заметил, что у нескольких языков есть опции выхода и продолжения, но, похоже, VB не имеет?
Вот цикл, который у меня есть. Я удалил беспорядок, который сделал, пытаясь заставить его работать.
Sub stituterangers()
Dim dify As Boolean
Dim difx As Boolean
Dim time2 As Date
Dim time1 As Date
For Each t In range("d7:cv7")
For Each x In range("d8:cv11")
If x > 0 Then time2 = x
For Each y In range("d2:cv2")
time1 = y
t.Value = time1 - time2
t = 0
Next y
Next x
Next t
End Sub
Sub stituterangersNEW()
Dim t As range
Dim x As range
Dim dify As Boolean
Dim difx As Boolean
Dim time2 As Date
Dim time1 As Date
On Error Resume Next
'Looping through each of our output cells.
For Each t In range("d7:cv7")
For Each y In range("d2:cv2")
If t.Column = y.Column Then
time1 = y.Value
If y = 0 Then Exit Sub
End If
For Each x In range("d8:cv11")
'Check to see if our dep time corresponds to
'the matching column in our output
If t.Column = x.Column Then
If x > 0 Then
time2 = x.Value
t.Value = time1 - time2
Exit For
End If
End If
Next x
Next y
Next t
End Sub