Оператор 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, оскільки це може призвести до суперечності норм структурного програмування і як наслідок – до виникнення помилок в логіці програми.