На... 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 и обратная связь.