Изявлението GoTo във VBA ви позволява да преминете към ред код.
Първо създайте етикет на ред навсякъде във вашия код:
1 | Пропускане: |
След това добавете към изявлението „GoTo“, за да преминете към етикета на реда
1 | GoTo Skip |
GoTo Примери
Този пример тества годината. Ако годината е 2022 или по -късна, тя ще отиде до етикета на пропуснатата линия. Това ви позволява да пропуснете кода, ако са изпълнени определени условия.
123456789101112 | Под GoTo_Example ()Затъмнете година като цяло числогодина = 2019Ако година> = 2019, тогава GoTo Skip„Данни за процеса за години <2022MsgBox „Годината е преди 2022“Пропускане:End Sub |
GoTo Многоредови етикети
Можете също да използвате оператори GoTo, за да преминете към съответните редове код. Нека коригираме предишния си пример, за да отидем на различни места с код въз основа на коя година е:
1234567891011121314151617181920212223242526272829303132 | Sub GoTo_Statement ()Затъмнете година като цяло числогодина = 2019Ако година = 2019 ТогаваОтидете през 2019 г.Иначе година = 2010 ТогаваОтидете до 2020 г.ИначеОтидете до 2021 годинаКрай Ако2019 година:„Процес 2022 г.MsgBox „Годината е 2022“Отидете до EndProc2020 година:„Процес 2022 г.MsgBox „Годината е 2022“Отидете до EndProc2021 година:„Процес 2022+MsgBox „Годината е 2022+“EndProc:End Sub |
Забележете „GoTo EndProc“ преди всеки етикет на ред. Добавихме този ред код, така че тези кодови секции се пропускат, освен ако не са достъпни от съответния „GoTo“.
GoTo Error Handler Край на процедурата
Сега нека използваме Error Handling, за да преминем към края на процедурата, ако има грешка.
123456789101112 | Sub GoTo_OnError ()Dim i As IntegerПри грешка GoTo EndProci = 5 /0MsgBox iEndProc:End Sub |
Отидете да повторите кода
Последният ни пример ще използва GoTo Statement за повтаряне на някакъв код.
По -долу използваме кутия за съобщения с Да / Не (Кликнете, за да научите повече), за да потвърдим, че потребителят признава предупреждението. Ако кликнат върху „Не“, полето със съобщение ще се показва отново, докато не кликне върху „Да“ (вижте GIF по -долу).
1234567891011 | Sub GoTo_ДаNoMsgBox ()Повторете съобщение:Затъмнен отговор Като цяло числоanswer = MsgBox ("ПРЕДУПРЕЖДЕНИЕ: Този файл е отворен като файл само за четене, което означава, че всички промени, които правите, няма да бъдат запазени, освен ако/докато нямате права за запис." & _Chr (13) & Chr (13) & "Изберете File, SaveAs, за да запазите копие, преди да работите в този файл." & vbNewLine & vbNewLine & "Разбирате ли?", vbExclamation + vbДаНе, "ВНИМАНИЕ!")Ако answer = vbNo, тогава GoTo RepeatMsg 'Repeat, докато потребителят кликне върху "Yes"End Sub |
VBA GoTo a Line Label в Access VBA
Всички горепосочени примери работят абсолютно същото в Access VBA като в Excel VBA.
1234567 | Sub TestGoTo ()При грешка GoTo завършваDoCmd.OpenForm "FrmClients"Изход от Subзавършване:MsgBox "Не може да се отвори формуляр"End Sub |