У меня есть 3 рабочих листа. Первые 2 я конвертирую в два массива (array1
и array2
), а затем выполняю вычисления между ними, чтобы создать третий.
Макрос, который я создал, использует этот фрагмент кода ---
Z = 1
For x = 1 To UBound(array1, 1)
For y = 1 To UBound(array2, 1)
If array1(x, 4) = 0 Then
GoTo Line1
End If
If array1(x, 1) = array2(y, 1) And array1(x, 2) = array2(y, 3)Then
If array1(x, 4) > array2(y, 5) Then
array3(z, 1) = array1(x, 3)
ElseIf array1(x, 4) = array2(y, 5) Or array1(x, 4) < array2(y, 5) Then
array3(z, 1) = array1(x, 3)
End If
z = z + 1
End If
Next y
Line1:
Next x
Он берет часть array1
и пропускает ее через array2
и создает результат в array3
В основном, когда array1(x, 4) = 0
, мне нужно, чтобы перейти к следующему X
. Я не могу понять, как это зациклить без GoTo Line1
.
Если я сдвину его вниз, то он продолжит перебирать array2(y)
вместо перехода к следующему X
. Если я передвину его выше, то y сбрасывается, и он снова проходит через цикл For y
.
Также используется GoTo Line X
, плохая практика в VBA. Должен ли я всегда стараться избегать его использования. Я довольно новичок в этом.
On Error Goto ...
). Избегайте этого в обычном коде. - person Tomalak   schedule 19.02.2018GoTo
никогда не требуется. Его использование увеличивает вероятность ошибок в вашем коде и общую вероятность головной боли. - person Tomalak   schedule 19.02.2018