КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
VBA. Организация циклов
Оператор безусловного перехода GoTo Оператор выбора Select Case Условный оператор If Ветвление - это управляющая операция языка программирования, позволяющая изменить порядок выполнения алгоритма программы. Для реализации ветвлений в программах на VBA используются следующие операторы: · условный оператор If; · оператор выбора Select Case; · оператор безусловного перехода Goto. Условный оператор – это структура, которая выбирает ту или иную ветвь кода процедуры на основе некоторого предопределенного условия или группы условий. Общий синтакис условного оператора: If <условие1> Then <Блок операторов1> [ElseIf <условие2> Then <Блок операторов2> [ElseIf <условиеN> Then <Блок операторовN>] [Else <Блок операторов_Else>]] End Ifгде: <условиеN> - проверяемое условное выражение; <Блок операторовN>; - операторы, выполняемые при истинности условия; <Блок операторов_Else> - операторы, выполняемые по умолчанию. Блоки ElseIf и Else - необязательны. Помимо приведенной полной формы, поддерживается синтаксис краткой однострочной формы условного оператора следующего вида: Примеры использования условного оператора приведены в листингах 3 и 4. Листинг 3. Полная форма условного оператора Sub sample4() Dim value As Long Const MSG = "Вы ввели число, " value = InputBox(prompt:="Введите число", Title:="Пример 4") If value = 0 Then MsgBox (MSG & "равное 0") ElseIf value > 0 Then MsgBox (MSG & "большее 0") Else MsgBox (MSG & "меньшее 0") End If End SubЛистинг 4. Краткая форма условного оператора Sub sample5() Dim value As Long Const MSG = "Вы ввели число, " value = InputBox(prompt:="Введите число", Title:="Пример 4") If value = 0 Then MsgBox (MSG & "равное 0") If value > 0 Then MsgBox (MSG & "большее 0") If value < 0 Then MsgBox (MSG & "меньшее 0") End SubЛогические выражения могут быть построены с помощью логических функций Not, And, Or, Xor, Imp, Eqv (листинг 5). Листинг 5. Составные логические выражения 'Программа запрашивает имя пользователя и пароль, 'проверяет введенную информацию и выводит сообщение. Sub sample5() Const UNAME = "User" Const PASSWD = "TopSecret" login = InputBox(prompt:="Логин") pass = InputBox(prompt:="Пароль") If (login = UNAME) And (pass = PASSWD) Then MsgBox ("Добро пожаловать!") Else MsgBox ("Вы не авторизованы!") End If End SubОператор выбора применяется в том случае, если проверяемое условное выражение может принимать много значений. В такой ситуации запись кода получается более компактной и наглядной, чем при использовании условного оператора. Формат оператора Select Case: Select Case <проверяемоеВыражение> Case <списокЗначений1> <блокОператоров1> [Case <списокЗначений2> <блокОператоров2>] [...] [Case Else <блокОператоров_Else>] End SelectПроверяемое выражение вычисляется в начале работы оператора Select Case. СписокЗначений – это одно или несколько выражений, разделенных запятой. При выполнении оператора проверяется, соответствует ли хотя бы один из элементов этого списка проверяемому выражению. Эти элементы списка значений могут иметь одну из трех форм: 1. <выражение> - в этом случае проверяется, совпадает ли значение проверяемогоВыражения с этим выражением. 2. <выражение1> To <выражение2> - проверяется, находится ли значение проверяемогоВыражения в указанном диапазоне значений. 3. Is <логическаяОперация> <выражение> - проверяемое выражение сравнивается с указанным значением с помощью заданной логической операции (или операции отношения). Отыскивается только первый подходящий элемент списков выражений. Пример использования оператора Select Case приведен в листинге 6. Листинг 6. Оператор выбора 'Процедура выводит на экран окно сообщения, 'содержащее командные кнопки Yes, No и Cancel; затем определяет 'выбранную пользователем кнопку и выводит сообщение, 'поясняющее этот выбор. Sub sample7() Const mTitle = "Демонстрация кнопок MsgBox" Dim Resp As Integer Resp = MsgBox(prompt:="Выберите кнопку", Title:=mTitle, _ Buttons:=vbYesNoCancel + vbQuestion) Select Case Resp Case Is = vbYes MsgBox prompt:="Вы выбрали кнопку 'Да'", Title:=mTitle, _ Buttons:=vbInformation Case Is = vbNo MsgBox prompt:="Вы выбрали кнопку 'Нет'", Title:=mTitle, _ Buttons:=vbInformation Case Is = vbCancel MsgBox prompt:="Вы выбрали кнопку 'Отмена'", Title:=mTitle, _ Buttons:=vbCritical End Select End SubОператор безусловного перехода GoTo всегда изменяет порядок выполнения операторов в процедуре или функции VBA без проверки каких-либо условий. Синтаксис оператора GoTo: GoTo <метка>где: <Метка> – это любая допустимая метка в той же процедуре или функции, которая содержит оператор GoTo. Листинг 7. Использование GoTo 'Программа будет запрашивать ввод значения пока не будет введено четное число Sub sample6() getValue: ' метка value = InputBox(prompt:="Введите четное число") If (value Mod 2 <> 0) Then GoTo getValue End SubДля иллюстрации решения задачи из листинга 7 приведем один из альтернативных способов, с помощьюоператора цикла (листинг 8). Листинг 8. Отказ от использования GoTo. Sub sample7() Do value = InputBox(prompt:="Введите четное число") Loop While value Mod 2 <> 0 End Sub
Дата добавления: 2013-12-13; Просмотров: 793; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |