Укажите значения по умолчанию для необязательных параметров.
Вы также можете указать значения по умолчанию для необязательных параметров. В следующем примере, если в процедуру функции не передаются необязательные параметры, возвращается значение по умолчанию.
SubListText(xAsString,OptionalyAs_
Целое число = 12345)
List1.AddItemx
List1.AddItemy
EndSub
PRivateSubCommand1_Click()
strName=yourname 'Второй параметр не указан.
CallListText(strName) 'Добавьте «ваше имя» и «12345».
EndSub
Использование неопределенного количества параметров Как правило, количество параметров в вызове процедуры должно равняться количеству параметров в описании процедуры. Вы можете использовать ключевое слово ParamArray, чтобы указать, что процедура будет принимать любое количество параметров. Итак, вы можете написать функцию Sum для вычисления суммы следующим образом:
DimxAsInteger
ДимиАсИнтегер
DimintSumAsInteger
SubSum(ParamArrayintNums())
Фореачксининтнумс
у=ух
Следующийx
intSum=y
EndSub
PrivateSubCommand1_Click()
Сумма1,3,5,7,8
List1.AddItemintSum
EndSub
Создание простых операторов с именованными параметрами
Для многих встроенных функций, операторов и методов Visual Basic предоставляет методы именованных параметров для быстрой передачи значений параметров. Для именованных параметров любое количество параметров может быть предоставлено в любом порядке путем присвоения значений именованным параметрам. Для этого введите именованный аргумент, затем двоеточие, знак равенства и значение (MyArgument:=SomeValue). Эти назначения можно располагать в любом порядке, разделяя их запятыми. Обратите внимание, что порядок параметров в следующем примере противоположен порядку обязательных параметров:
FunctionListText(strNameAsString,OptionalstrAddressAsString)
List1.AddItemstrName
List2.AddItemstrAddress
EndSub
PrivateSubCommand1_Click()
ListTextstrAddress:=12345,strName:=ВашеИмя
EndSub
Вышеописанное более полезно, если процедура имеет несколько необязательных параметров, которые не всегда нужно указывать.
Подтвердить поддержку именованных параметров
Чтобы определить, какие функции, инструкции и методы поддерживают именованные параметры, используйте функцию AutoQuickInfo в окне «Код», проверьте обозреватель объектов или обратитесь к справочнику по языку. При использовании именованных параметров помните следующее:
Методы объектов в библиотеке объектов Visual Basic (VB) не поддерживают именованные параметры. Все ключевые слова языка в библиотеке объектов Visual Basic для приложений (VBA) поддерживают именованные параметры.
В синтаксисе именованные параметры выделены жирным шрифтом и курсивом. Все остальные параметры выделены курсивом.
Важно отметить, что при использовании именованных параметров нельзя пропустить ввод обязательных параметров. Опускать можно только необязательные параметры. Для библиотек объектов Visual Basic (VB) и Visual Basic for Applications (VBA) диалоговое окно «Обозреватель объектов» заключает необязательные параметры в квадратные скобки [].
Подробности см. в разделах ByVal, ByRef, Необязательно и ParamArray в справочнике по языку.
Обзор структуры управления
С помощью структуры управления можно контролировать ход выполнения программы. Если операторы потока управления не отмечены флажком, программа выполняет эти операторы слева направо и сверху вниз. Некоторые простые программы могут быть написаны только с односторонним потоком, а некоторые потоками можно управлять с помощью приоритета операторов, но эффективность и полезность любого языка программирования проистекает из его способности изменять порядок операторов с помощью структур и циклов.
структура решения
Процедуры Visual Basic могут проверять условные выражения, а затем выполнять различные действия на основе результатов проверки.
Структуры принятия решений, поддерживаемые Visual Basic:
1. Если... Тогда
2.Если...То...Иначе
3.Выберите регистр
Если... Тогда
Используйте структуру If...Then для условного выполнения одного или нескольких операторов. Можно использовать как однострочный синтаксис, так и многострочный блочный синтаксис:
Оператор IfconditionThen
ЕслиусловиеТогда
заявления
КонецЕсли
условием обычно является сравнение, но это может быть любое выражение, вычисляющее числовое значение. Visual Basic интерпретирует это значение как True или False: нулевое значение является False, а любое ненулевое значение считается True. Если условие истинно, Visual Basic выполняет все инструкции, следующие за ключевым словом then. Вы можете условно выполнить оператор, используя однострочный или многострочный синтаксис (следующие два примера эквивалентны):
IfanyDate<NowThenanyDate=Сейчас
IfanyDate<NowThen
AnyDate=Сейчас
КонецЕсли
Примечание. В однострочном формате If...Then оператор EndIf не используется. Если вы хотите выполнить несколько строк кода, когда условие истинно, вы должны использовать синтаксис многострочного блока If...Then...EndIf.
IfanyDate<NowThen
AnyDate=Сейчас
Timer1.Enabled=False 'Управление таймером отключено.
КонецЕсли
Если... Тогда... Иначе
Определите несколько блоков операторов с помощью блоков If...Then...Else и выполните один из операторов:
Еслиусловие1Тогда
[блок-1]
[ЕщеЕслиусловие2Тогда
[блок инструкций-2]]...
[Еще
[блок инструкций-n]]
КонецЕсли
VisualBasic сначала проверяет условие1. Если оно имеет значение False, Visual Basic проверяет условие2 и т. д., пока не найдет условие, имеющее значение True. Когда Visual Basic находит условие, имеющее значение True, он выполняет соответствующий блок операторов, а затем выполняет код, следующий за EndIf. Как вариант, вы можете включить блок операторов Else, который Visual Basic выполняет, если ни одно из условий не является истинным.
If...Then...ElseIf — это частный случай If...Then...Else. Обратите внимание, что вы можете использовать любое количество предложений ElseIf или не использовать их вообще. Предложение Else может присутствовать независимо от наличия предложения ElseIf.
Например, приложение может выполнить действие в зависимости от того, какой элемент управления в массиве элементов управления меню был нажат:
PrivateSubmnuCut_Click(IndexAsInteger)
IfIndex=0Тогда команда «Вырезать».
CopyActiveControl 'Вызов общей процедуры.
Очиститьактивеконтрол
ElseIfIndex=1Тогда команда «Копировать».
Копироватьактивеконтрол
ElseIfIndex=2Then 'Очистить команду.
Очиститьактивеконтрол
Иначе 'Вставить команду.
Пастеактивеконтрол
КонецЕсли
EndSub
Обратите внимание , что вы всегда можете добавить дополнительные блоки ElseIf в структуру If...Then. Однако писать эту структуру утомительно, когда каждый ElseIf сравнивает одно и то же выражение с другим числовым значением. В этом случае вы можете использовать структуру принятия решений SelectCase.
Подробную информацию см. в разделе «Оператор If...Then...Else» в «Справочном руководстве по языку VisualBasic6.0».
Выбор регистра
VisualBasic предоставляет структуру SelectCase для замены If...Then...Else, чтобы можно было выборочно выполнить один из нескольких блоков операторов. Возможности оператора SelectCase аналогичны оператору If...Then...Else, но в случае выбора нескольких вариантов оператор SelectCase делает код более читабельным.
SelectCase обрабатывает тестовое выражение над структурой и оценивает его только один раз. Затем Visual Basic сравнивает значение выражения со значением каждого Case в структуре. Если они равны, выполняется блок операторов, связанный с Case.
ВыбратьCasetestexpression
[Caseexpressionlist1
[блок инструкций-1]]
[Caseexpressionlist2
[блок инструкций-2]]
.
.
.
[CaseElse
[блок инструкций-n]]
КонецВыбрать
Каждый список выражений представляет собой список из одного или нескольких значений. Если в списке несколько значений, разделяйте значения запятыми. Каждый блок операторов содержит ноль или более операторов.
Если тестовому выражению соответствует более одного Case, выполняется только блок операторов, связанный с первым совпадающим Case. Если ни одно значение в списке выражений не соответствует тестовому выражению, Visual Basic выполняет инструкцию в предложении CaseElse (это необязательно).
Например, предположим, что вы хотите добавить команду в меню «Правка» в примере «Если...Тогда...Иначе». Для этого вы можете добавить предложение ElseIf или использовать SelectCase для написания функции:
PrivateSubmnuCut_Click(IndexAsInteger)
SelectCaseIndex
Case0 Команда «Вырезать».
CopyActiveControl 'Вызов общей процедуры.
Очиститьактивеконтрол
Case1 'Команда «Копировать».
Копироватьактивеконтрол
Case2 'Команда «Очистить».
Очиститьактивеконтрол
Case3 'Вставить команду.
Пастеактивеконтрол
CaseElse
frmFind.Show 'Показать найденное диалоговое окно.
КонецВыбрать
EndSub
Обратите внимание, что структура SelectCase каждый раз оценивает выражение в начале. Структура If...Then...Else оценивает разные выражения для каждого оператора ElseIf. Структуру If...Then...Else можно заменить структурой SelectCase только в том случае, если инструкция If и каждая инструкция ElseIf оценивают одно и то же выражение.
->