Использование GoTo не рекомендуется даже MSDN (, вы должны использовать его только для обработки ошибок в сочетании с Resume ), но, поскольку вы спросили, это подход:
Sub program()
Dim i As Integer
Dim q As Integer
For i=1 to 350
If ((Range("A"&i).value=1) And (Range("D"&i).Value<15)) Then Goto OtherLoop
FirstLoop:
Next i
Exit Sub
OtherLoop:
q=0
Do While List1.Range("A"&i+q).Value<>""
Range("E"&i+q)="K"
q=q+1
Loop
Goto FirstLoop
End Sub
Вам нужен оператор Exit, чтобы ваш код не входил в «OtherLoop», когда он заканчивает «FirstLoop», а также нужно сказать ему, чтобы он вернулся туда, где вы были раньше.Опять же, избегайте использования этого материала.Циклы внутри циклов ( отступ для организации, пожалуйста, ) и вызовы вторичных процедур (вызов другого подпрограммы или функции) гораздо более рекомендуются.