В VBA вы можете выйти из подпрограммы или функции, используя Выйти из подводной лодки или Функция выхода команды.
1 | Выйти из подводной лодки |
1 | Функция выхода |
Когда выполнение кода дойдет до Выйти из подводной лодки или Функция выхода, он выйдет из подпрограммы или функции и продолжит выполнение любого другого кода.
Если вы хотите узнать, как выйти из подпрограммы при ошибке, щелкните по этой ссылке: VBA при ошибке Exit Sub
Если вы хотите узнать, как завершить выполнение всего кода, щелкните эту ссылку: VBA End
Выйти из Sub в VBA
Вы увидите на примере, что происходит, когда мы используем Выйти из подводной лодки команда в Sub. Мы создали Sub ExitSub, который имеет Выйти из подводной лодки команда внутри. ПодводныйCallExitSub называет это Sub. Вот код:
123456789101112131415161718 | Приватная подписка ExitSub ()Dim i как целое числоДля i = от 1 до 10Если i = 5, тоВыйти из подводной лодкиMsgBox "Значение i равно" & iКонец, еслиДалее яКонец подпискиЧастный дополнительный вызовВызов ExitSubMsgBox «Выход из подписки»Конец подписки |
в ExitSub, мы сначала входим в цикл For Loop, если значение i меньше 10:
123 | Для i = от 1 до 10Далее я |
После этого мы проверяем, равно ли значение i 5, используя команду If. Если значение равно 5, мы хотим выйти из подпрограммы и вернуть поле сообщения со значением i:
1234 | Если i = 5, тоВыйти из подводной лодкиMsgBox "Значение i равно" & iКонец, если |
Если условие не выполняется, следующий оператор увеличивает i на 1 и снова входит в цикл For:
1 | Далее я |
в CallExitSub, сначала мы вызываем Sub ExitSub:
1 | Вызов ExitSub |
После этого возвращаем окно сообщения:
1 | MsgBox «Выход из подписки» |
Если вы запустите CallExitSub, сначала он вызовет ExitSub. Если вы выполните этот код в режиме отладки, вы увидите, что он пройдет цикл 5 раз. В 5th итерации значение переменной i становится равным 5, и код входит в тело If. Теперь Sub ExitSub выходит и возвращается в CallExitSub. Следующая строка MsgBox «Выход из подписки»:
Как видите, ExitSub выходит сразу после Выйти из подводной лодки команда, поэтому MsgBox «Значение i равно» & i никогда не будет выполнен.
Выход из функции в VBA
Выход из функции в VBA аналогичен выходу из подпрограммы, только команда Функция выхода. В этом примере мы создали ExitFunc который возвращает целое число. Подводный CallExitFunction вызывает эту функцию. Вот код:
1234567891011121314151617181920 | Закрытая функция ExitFunc () как целое числоDim i как целое числоДля i = от 1 до 10Если i = 5, тоExitFunc = яФункция выходаКонец, еслиДалее яКонечная функцияЧастная подпрограмма CallExitFunction ()Dim intFunc как целое числоintFunc = ExitFunction ()MsgBox "Значение intFunc равно" & intFuncКонец подписки |
в ExitFunc, мы сначала входим в цикл For Loop, если значение i меньше 10:
123 | Для i = от 1 до 10Далее я |
После этого мы проверяем, равно ли значение i 5, используя команду If. Если значение равно 5, мы присваиваем значение i результату функции и выходим из функции:
1234 | Если i = 5, тоExitFunc = яФункция выходаКонец, если |
Если условие не выполняется, следующий оператор увеличивает i на 1 и снова входит в цикл For:
1 | Далее я |
в CallExitFunction, сначала вызываем функцию ExitFunc: Для этого мы должны объявить переменную intFunc введите целое число и присвойте результат ExitFunc функция к нему:
123 | Dim intFunc как целое числоintFunc = ExitFunction () |
После этого мы возвращаем окно сообщения со значением intFunc:
1 | MsgBox "Значение intFunc равно" & intFunc |
Если вы запустите CallExitFunction, он сначала вызовет функцию ExitFunc. Если вы выполните этот код в режиме отладки, вы увидите, что он пройдет цикл 5 раз. В 5th итерации значение переменной i становится равным 5, и код входит в тело If. Теперь ценность ExitFunc становится i, и функция завершается и возвращается в CallExitFunction. Следующая строка MsgBox «Значение intFunc равно» & intFunc: