На... GoSub, On... Инструкции GoTo

Ветвь к одной из нескольких заданных строк, зависящая от значения выражения.

Синтаксис

Всписке назначенияДля выраженияGoSub
В спискеназначенияGoTo в выражении

Синтаксис операторов On...GoSub и On...GoTo состоит из следующих частей:

Part Описание
выражение Обязательно. Любое числовое выражение, которое вычисляется равным некоторому целому числу от 0 до 255 включительно. Если аргумент expression равен какому-нибудь числу, отличному от целого числа, он округляется, прежде чем будет оценен.
список назначений Обязательно. Список номеров строк или меток строк, разделенных запятыми.

Замечания

Значением аргумента expression определяется, какая строка ветвится в список адресатов destinationlist. Если значение аргумента expression меньше, чем 1 или больше, чем количество элементов в списке, имеет место один из следующих результатов:

Если expression Then
Равно 0 Управление передается оператору, следующему за оператором On...GoSub или за оператором On...GoTo.
Больше, чем количество элементов в списке Управление передается оператору, следующему за оператором On...GoSub или за оператором On...GoTo.
Negative Происходит ошибка.
Больше, чем 255 Происходит ошибка.

Допускается смешивать в одном списке номера строк и метки строк. Используйте столько меток строк и номеров строк, сколько вам нравится в on... GoSub и Включено... GoTo. Однако если задействовать больше меток или номеров, чем вмещается на одной строке, потребуется использовать знак продолжения строки, чтобы продолжить логическую строку на следующей физической строке.

Совет

Конструкция Select Case предоставляет более структурированный и гибкий способ выполнения составных ветвлений.

Пример

В этом примере операторы On...GoSub и On...GoTo используются для ветвления на подпрограммы и метки строк, соответственно.

Sub OnGosubGotoDemo() 
Dim Number, MyString 
 Number = 2 ' Initialize variable. 
 ' Branch to Sub2. 
 On Number GoSub Sub1, Sub2 ' Execution resumes here after 
 ' On...GoSub. 
 On Number GoTo Line1, Line2 ' Branch to Line2. 
 ' Execution does not resume here after On...GoTo. 
 Exit Sub 
Sub1: 
 MyString = "In Sub1" : Return 
Sub2: 
 MyString = "In Sub2" : Return 
Line1: 
 MyString = "In Line1" 
Line2: 
 MyString = "In Line2" 
End Sub

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.