Оператор GoTo в VBA позволяет перейти к строке кода.
Сначала создайте метку строки в любом месте вашего кода:
1 | Пропускать: |
Затем добавьте в оператор «GoTo», чтобы перейти к метке строки.
1 | GoTo Пропустить |
Примеры GoTo
В этом примере проверяется год. Если наступит 2022 год или позже, он перейдет к метке Пропустить строку. Это позволяет пропустить код при соблюдении определенных условий.
123456789101112 | Sub GoTo_Example ()Тусклый год как целое числогод = 2019Если год> = 2019, GoTo Skip'Данные о процессах за годы <2022MsgBox «Год до 2022 года»Пропускать:Конец подписки |
Перейти к меткам нескольких строк
Вы также можете использовать операторы GoTo для перехода к соответствующим строкам кода. Давайте скорректируем наш предыдущий пример, чтобы переходить к разным местоположениям кода в зависимости от того, какой сейчас год:
1234567891011121314151617181920212223242526272829303132 | Sub GoTo_Statement ()Тусклый год как целое числогод = 2019Если год = 2019, тоПерейти к году2019ИначеЕсли год = 2010 ТогдаПерейти к 2020 годуЕщеПерейти к году2021Конец, еслигод2019:'Процесс 2022MsgBox "Год 2022"GoTo EndProc2020 год:'Процесс 2022MsgBox "Год 2022"GoTo EndProcгод2021:'Процесс 2022+MsgBox «Год 2022+»EndProc:Конец подписки |
Обратите внимание на «GoTo EndProc» перед каждой меткой строки. Мы добавили эту строку кода, чтобы эти разделы кода пропускались, если к ним не обращается соответствующий «GoTo».
Обработчик ошибок GoTo Конец процедуры
Теперь давайте воспользуемся обработкой ошибок, чтобы завершить процедуру в случае ошибки.
123456789101112 | Sub GoTo_OnError ()Dim i как целое числоПри ошибке GoTo EndProcя = 5/0MsgBox iEndProc:Конец подписки |
Перейти к повторению кода
В нашем последнем примере оператор GoTo будет повторять некоторый код.
Ниже мы используем окно сообщений Да / Нет (нажмите, чтобы узнать больше), чтобы подтвердить, что пользователь принимает предупреждение. Если они нажмут «Нет», окно сообщения будет отображаться снова, пока они не нажмут «Да» (см. GIF ниже).
1234567891011 | Sub GoTo_YesNoMsgBox ()RepeatMsg:Тусклый ответ как целое числоanswer = MsgBox ("ПРЕДУПРЕЖДЕНИЕ: этот файл был открыт как файл только для чтения, что означает, что любые внесенные вами изменения не будут сохранены, если / пока у вас нет прав на запись." & _Chr (13) и Chr (13) & «Выберите файл, Сохранить как, чтобы сохранить копию, прежде чем работать с этим файлом». & vbNewLine & vbNewLine & «Вы понимаете?», vbExclamation + vbYesNo, «ВНИМАНИЕ!»)Если answer = vbNo Then GoTo RepeatMsg 'Повторять, пока пользователь не нажмет «Да»Конец подписки |
VBA Перейти к метке строки в Access VBA
Все приведенные выше примеры работают в Access VBA точно так же, как и в Excel VBA.
1234567 | Sub TestGoTo ()При ошибке GoTo заканчиваетсяDoCmd.OpenForm "FrmClients"Выйти из подводной лодкиокончание:MsgBox «Невозможно открыть форму»Конец подписки |