Оператор GoTo – это оператор безусловного перехода, который относится к группе управляющих операторов VBA. С его помощью можно изменить порядок выполнения операторов в программе. А именно – перейти (перескочить) к выполнению того участка кода программы, который указан в операторе GoTo.
Синтаксис GoTo VBA
GoTo mark1 :
где,
- mark1 – это метка, которая определяет оператор (или группу операторов), с которого нужно продолжить выполнение программы.
- знак двоеточие (:) – обязательный символ, который обязательно нужно указывать после метки.
Пример использования GoTo в VBA
Sub Password()
Pass = InputBox("Введите пожалуйста пароль") 'выводим окно в котором просим ввести пароль
If Pass <> "123" Then GoTo Wrong_pass 'если введенный пользователем пароль не равен 123, то переходим к метке Wrong_pass
MsgBox ("Поздравляю! Вы ввели правильный пароль") 'если пользователь ввел 123, то выводим сообщение, что пароль правильный и продолжаем выполнять код далее по порядку
MsgBox ("Это следующее сообщение, чтобы показать, что код выполняется последовательно")
Exit Sub
Wrong_pass: 'идентификатор метки
'Выводим сообщение, что пароль не верен и если пользователь нажал ДА, то снова вкликаем процедуру Password, чтобы он попытался ввести пароль еще раз
If MsgBox("Ошибка! Введённый вами пароль не верен. Хотите попробовать еще?", vbYesNo) = vbYes Then
Password
End If
End Sub
Внимание!
Метка обязательно должна находиться в той же процедуре, что и оператор GoTo. Самих же меток в программе может быть неограниченное количество.
Если вы попытаетесь обратиться к метке из другой процедуры, то получите ошибку “Compile error. Label not defined”.
Примечание.
Оператор GoTo следует применять только в том случае, если без него никак не обойтись.
Как правило, его используют при обработке ошибок. В других же случаях лучше избегать использования в коде GoTo, поскольку это может привести к противоречию нормам структурного программирования и как следствие – к возникновению ошибок в логике программы.