Excel VBA - выход для цикла

93

Я хотел бы выйти из цикла for, когда выполняется условие внутри. Как я могу выйти из цикла for, когда условие if выполнено? Я думаю, что какой-то выход в конце моего оператора if, но не знаю, как это будет работать.

Dim i As Long
For i = 1 To 50
    Range("B" & i).Select
    If Range("B" & i).Value = "Artikel" Then
        Dim temp As Long
        temp = i
    End If
Next i
Range("A1:Z" & temp - 1).EntireRow.Delete Shift:=xlToLeft
  • 12
    If [condition] Then Exit For внутри вашего цикла
Теги:
excel-vba
for-loop

2 ответа

218
Лучший ответ

Чтобы выйти из цикла раньше, вы можете использовать Exit For

If [condition] Then Exit For

  • 4
    Обзор MSDN, какие операторы выхода существуют в VBA
  • 0
    очень полезно, спасибо
15

Еще один способ выхода из цикла For - это изменить счетчик циклов:

For i = 1 To 10
    If i = 5 Then i = 10
Next i

Debug.Print i   '11

For i = 1 To 10
    If i = 5 Then Exit For
Next i

Debug.Print i   '5
  • 2
    Назначить счетчик цикла гораздо менее надежно и в будущем, чем явный выход из цикла. Первый может быть нарушен изменением максимума счетчика цикла, поскольку код изменяется, если редактор не замечает, что он также используется в другом месте. Это также не относится к циклам For Each .
  • 1
    Это просто еще одно решение вопроса, специфичного для цикла For (не For Each ). «За» и «против» применимы к различным решениям и различным ситуациям - например, это более надежный формат, чем Go To label « Go To label которая тормозит логику (неструктурированное программирование) или возможный обходной путь ключевого слова « Continue , отсутствующего в VBA. Достоинства Exit For могут быть подвергнуты сомнению, если логика не выполняет надлежащую очистку объектов - плохие реализации здесь не совсем актуальны (@ jpmc26)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню