Не совсем уверен, что вы пытаетесь сделать, но следующее должно выполнять то, что вы хотели бы сделать.
Кстати, определение ячейки как диапазона и т. Д. Не является лучшей практикой.лучше дать ему имя, отличное от имени функции и т. д.
with thisworkbook.sheets(1)
if .range("B8").value = 2 then
for i = 16 to 35
if .range("B" & i).value = "" or .range("B" & i).value = "N/A" then
goto EndGame
else
msgbox "pn is " & .range("B" & i).value & " route is " & .range("J" & i).value
end if
next i
EndGame:
end if
end with
Если вы хотите сделать 2 цикла, сначала для B, чем для J, вы можете сделать это.Однако, если одна из ячеек в одном из циклов не содержит ничего или функция n / a -> остановится.Если вы хотите перейти к следующему (я);итерация.Вы должны поставить:
EndGame:
непосредственно перед:
next i
-
dim First_Range_Done as boolean
with thisworkbook.sheets(1)
if .range("B8").value = 2 then
for i = 16 to 35
if First_Range_Done = false then
if .range("B" & i).value = "" or .range("B" & i).value = "N/A" then
goto EndGame
else
msgbox "pn is " & .range("B" & i).value & " route is " & .range("J" & i).value
end if
end if
if First_Range_Done = true
if .range("J" & i).value = "" or .range("J" & i).value = "N/A" then
goto EndGame
else
msgbox "pn is " & .range("B" & i).value & " route is " & .range("J" & i).value
end if
if i = 35 then exit sub
end if
if i = 35 then
First_Range_Done = true
i = 15
end if
next i
EndGame:
end if
end with