Любая процедура это
Управляющие операторы позволяют изменить стандартный порядок выполнения операторов. Процедура, включающая управляющие операторы, может принимать решения в зависимости от значений данных или от состояния приложения.
Управляющие операторы, определяя альтернативный порядок выполнения команд (ветвление) или повторение некоторой совокупности
Операторы комментариев и операторы
Оператор организует ветвление программы, т.е. выполнение различных действий в зависимости от истинности условия - это может быть условие на значения переменных или условие относительно текущего состояния приложения.
Условный оператор может быть записан в одну строку или блоком.
If condition Then [statements] [Else elsestatements]
Например, оператор IF salary <9000 Then social=salary*0.2 вычисляет выплату, если зарплата менее 9000.
If condition-1 Then [statements] [ElseIf condition-2 Then [elseifstatements-2] ... [Else [elsestatements]] End If
сondition-n - тестируемые выражения со значением True или False. Обязательный элемент;statements , elseifstatements-2, elsestatements - ElseIf - ключевое слово (записывается в одно слово), используемое для задания дополнительных условий (их может быть несколько). Необязательный элемент;End If - оператор, играющий роль закрывающей операторной скобки.Если условие ( ) верно, то выполняется . Если условие нарушено, при записи оператора в строку выполняется elsestatements, а при записи оператора блоком конструкция позволяет задать дополнительные условия тестирования и, если ни одно из них не выполнено, то выполняются операторы elsestatements.
После выполнения одной EndIf.
IF salary <9000 Then social=salary*0.2 Else social=0 End If
Приведенный в примере оператор вычисляет выплату, если зарплата менее 9000, и устанавливает нулевую выплату в противном случае.
statements , elseifstatements, elsestatements может быть пустой или состоять из нескольких операторов, записанных последовательно в разных строках или через двоеточие в одной строке. По крайней мере, одна из последовательностей должна быть непустой.Else и к ElseIf , может быть опущена, если она не используется (нет альтернативных действий).ElseIf может быть несколько. При наличии такой конструкции отыскивается первое истинное условие, и выполняются соответствующие операторы elseifstatements.EndIf обязателен в блочной структуре условного оператора и не используется при записи условного оператора в строку.Примеры
Переменная p описана как Long, т.к. значение произведения превосходит число 32767. Начальное значение переменной устанавливается в 1.
В For вложен условный оператор If.
(рис 6.1) Пример вычисления суммы и произведения четных чисел в интервале значенийЗапись представляет объект Range - ячейку первого столбца i-ой строки. Объект Interior - цвет заливки ячейки. Свойство ColorIndex этого объекта - номер цвета из цветовой палитры.
(рис 6.2) Пример раскраски ячеек, значения которых имеют разные остатки от деления на 3При использовании в условии числового выражения нуль интерпретируется как False, а любое значение, отличное от нуля, как True. В условии можно проверить тип выражения или значение переменной, используя специальные функции:
| Функция | Синтаксис | Предназначена для проверки |
|---|---|---|
| IsArray | IsArray(VarName) |
является ли переменная VarName массивом |
| IsDate | IsDate(expression) |
является ли выражение expression датой или может ли быть преобразовано в дату |
| IsEmpty | |
инициализирована ли переменная expression или содержит ли выражение (переменная или ячейка) пустое значение |
| IsMissing | IsMissing(argname) |
пропущен ли аргумент argname процедуры. Используется в процедурах, имеющих необязательные параметры |
| IsNull | IsNull(expression) |
имеет ли выражение expression значение Null |
| IsNumeric | IsNumeric(expression) |
является ли |
| IsObject | IsObject(expression) |
является ли |
При необходимости анализировать большое количество условий в качестве альтернативы условному оператору If используется оператор Select Case, который создает более читабельную программу. Оператор Select Case - это
Синтаксис оператора
Select Case testexpression [Case expressionlist-n [statements-n]] ... [Case Else [elsestatements]] End Select
testexpression - тестируемое выражение. Обязательный элемент;Case задают возможные значения тестируемого выражения;expressionlist - список значений тестируемого выражения, который определяет выполняемую expressionlist-1, то выполняются операторы statements -1 и т.д.;Case Else определяет операторы, которые выполняются, если значение не найдено ни в одном списке;statements -n, elsestatements Значения списка могут быть представлены константами или выражениями, имеющими числовые или символьные значения. Элементы списка перечисляются через запятую или могут иметь одну из двух форм:
expression (To expression (верхняя граница) - задает диапазон значений списка: "от" и "до";Is comparisonoperator (оператор сравнения) - задает условие на значение тестируемого выражения, при справедливости которого выполняются последующие операторы.Case Else нет в операторе выбора и значение не найдено ни в одном списке, ни одна из End Select.Примеры
По сравнению с процедурой color_cells_if, записанной при помощи оператора If, новая процедура выглядит более лаконичной и прозрачной.
(рис 6.4) Пример применения оператора Select CaseПовтор действий в процедурах достигается при помощи организации циклов. Цикл - это многократно повторяемая
В языке Visual Basic используется несколько форм
Одни и те же действия по повтору команд можно записать различными способами, но в разных ситуациях удобнее использовать определенные способы организации циклов.
Оператор используется для организации вычисляемого цикла ( Counted Loop ), который применяется, если известно или может быть вычислено количество повторений.
Синтаксис оператора
For counter = start To end [Step step] [statements] [Exit For] [statements] Next [counter]
counter - переменная цикла (счетчик цикла);start - начальное значение переменной цикла;end - конечное значение переменной цикла;step - шаг цикла. Необязательное значение. По умолчанию шаг цикла равен единице;Exit For - оператор немедленного выхода из цикла;statements - набор повторяемых команд (тело цикла);Next - оператор окончания цикла.При первом входе в цикл счетчик цикла устанавливается в начальное значение ( start ). При каждом повторе к счетчику цикла прибавляется шаг цикла ( ). Как только значение переменной цикла превысит конечное значение, цикл завершается. Можно подсчитать, сколько раз выполнится цикл: например, если шаг цикла равен единице, то цикл выполняется end-start+1 раз и каждый раз с новым значением счетчика цикла.
counter - числовая переменная. Счетчик цикла обычно участвует в вычислениях внутри цикла.start, end, step могут быть заданы числами, числовыми переменными или числовыми выражениями.Next идентификатор счетчика цикла, так как в случае использования Exit For осуществляет немедленный выход из цикла независимо от значения счетчика цикла.Примеры
Переменная i (счетчик цикла) в процессе выполнения цикла меняет значение от 1 (устанавливается выражением i=1 ) до значения 5, заданного выражением To 5. Шаг изменения значений переменной i по умолчанию 1.
(рис 6.5) Распечатка в окне Immediate первых пяти целых чиселМожно было бы записать все операторы на одной строке, используя двоеточие как разделитель между операторамиFor i=1 To 5: Debug.Print i : Next i.
В процедуре используются два s=0, s=s+n. Первый оператор устанавливает начальное значение для суммы чисел, а второй наращивает эту сумму в процессе вычислений.
(рис 6.6) Пример суммирования чисел от 1 до 1000Цикл
Синтаксис оператора
For Each element In group [statements] [Exit For] [statements] Next [element]
element - переменная, значения которой суть элементы из группы;group - массив данных или группа объектов;statements - Exit For - оператор, осуществляющий немедленный выход из цикла.element должна быть переменной типа Variant.element - Object или должен совпадать с типом элементов For Each для группы объектов более эффективен, чем цикл For Next.Примеры
В вычисляемом цикле значения элементов массива устанавливаются равными номеру элемента массива.
В цикле i принимает значения элементов массива.
(рис 6.7) Суммирование элементов массиваПеременная Obj_range объявлена как объект Range и ее значение устанавливается оператором Set как ссылка на интервал ячеек A1:B6.
Переменная p (переменная цикла Obj_range, устанавливая их значения в номер элемента.
(рис 6.8) Заполнение интервала ячеек последовательными натуральными числамиЭтот цикл является логически прерываемым циклом. Цикл, организованный при помощи этой структуры, повторяет набор инструкций, пока выполнено некоторое условие. Такую форму цикла чаще всего используют в условиях неопределенности, когда нельзя заранее установить, сколько раз потребуется повторять действия. Например, если заранее неизвестно, скольким сотрудниками следует рассчитать зарплату, можно использовать оператор Do…Loop при условии, что значение некоторой переменной будет свидетельствовать об окончании расчета.
Синтаксис оператора
Do [(While|Until) condition] [statements] [Exit Do] [statements] Loop [(While | Until) condition]
condition - тестируемое выражение со значением True или False ;While - повтор операторов, пока условие ( condition ) истинно;Until - повтор операторов, пока условие ложно (пока условие не станет истинным).While эквивалентны циклам Until, в которых перед условием стоит Not:While condition = Until Not condition
Exit Do - оператор немедленного выхода из цикла;statements - По сути, оператор имеет пять вариантов синтаксиса. В первых двух вариантах While|Until проверяется в начале цикла. В следующих двух вариантах While|Until проверяется в конце цикла. Пятый вариант -
While|Until condition отсутствует, то в Exit Do.Exit Do всегда завершает внутренний цикл.Пример
Поиск первой непустой ячейки в первой строке
Рассмотрим два способа записи оператора ) и с условием в конце

(рис 6.10) Способ записи оператора Do…Loop с условием в начале оператора цикла(рис 6.9) Способ записи оператора Do…Loop с условием в конце оператора циклаАргумент ActiveSheet. функции IsEmpty определяет очередную ячейку первой строки активного листа. Оператор Exit Sub немедленно завершает процедуру, если просмотрены все 256 ячеек первой строки и непустая ячейка не найдена ( i=257 ).
После нормального выхода из цикла значение переменной i указывает на номер столбца, в первой строке которого обнаружена непустая ячейка. Последний оператор процедуры выделяет найденную ячейку.
В первом случае цикл выполняется до тех пор, пока ячейка пуста. Тестирование выполняется до входа в цикл. Во втором случае цикл выполняется до тех пор, пока ячейка не станет непустой. Тестирование выполняется в конце цикла.
Этот способ организации цикла повторяет команды, пока заданное условие верно. Он полностью эквивалентен циклу Do…Loop с условием While в первой строке оператора.
Синтаксис оператора
While condition statements Wend
condition - тестируемое выражение со значением True или False ;statements - Приведем процедуру расчета зарплаты с использованием этого
Выполняется проверка введенных значений h и r, если оба не равны нулю, то проводится расчет и запрос на ввод данных о следующем сотруднике. В противном случае цикл завершается.
(рис 6.11) Пример цикла While… Wend
Любая процедура это
Управляющие операторы позволяют изменить стандартный порядок выполнения операторов. Процедура, включающая управляющие операторы, может принимать решения в зависимости от значений данных или от состояния приложения.
Управляющие операторы, определяя альтернативный порядок выполнения команд (ветвление) или повторение некоторой совокупности
Операторы комментариев и операторы
Оператор организует ветвление программы, т.е. выполнение различных действий в зависимости от истинности условия - это может быть условие на значения переменных или условие относительно текущего состояния приложения.
Условный оператор может быть записан в одну строку или блоком.
If condition Then [statements] [Else elsestatements]
Например, оператор IF salary <9000 Then social=salary*0.2 вычисляет выплату, если зарплата менее 9000.
If condition-1 Then [statements] [ElseIf condition-2 Then [elseifstatements-2] ... [Else [elsestatements]] End If
сondition-n - тестируемые выражения со значением True или False. Обязательный элемент;statements , elseifstatements-2, elsestatements - ElseIf - ключевое слово (записывается в одно слово), используемое для задания дополнительных условий (их может быть несколько). Необязательный элемент;End If - оператор, играющий роль закрывающей операторной скобки.Если условие ( ) верно, то выполняется . Если условие нарушено, при записи оператора в строку выполняется elsestatements, а при записи оператора блоком конструкция позволяет задать дополнительные условия тестирования и, если ни одно из них не выполнено, то выполняются операторы elsestatements.
После выполнения одной EndIf.
IF salary <9000 Then social=salary*0.2 Else social=0 End If
Приведенный в примере оператор вычисляет выплату, если зарплата менее 9000, и устанавливает нулевую выплату в противном случае.
statements , elseifstatements, elsestatements может быть пустой или состоять из нескольких операторов, записанных последовательно в разных строках или через двоеточие в одной строке. По крайней мере, одна из последовательностей должна быть непустой.Else и к ElseIf , может быть опущена, если она не используется (нет альтернативных действий).ElseIf может быть несколько. При наличии такой конструкции отыскивается первое истинное условие, и выполняются соответствующие операторы elseifstatements.EndIf обязателен в блочной структуре условного оператора и не используется при записи условного оператора в строку.Примеры
Переменная p описана как Long, т.к. значение произведения превосходит число 32767. Начальное значение переменной устанавливается в 1.
В For вложен условный оператор If.
(рис 6.1) Пример вычисления суммы и произведения четных чисел в интервале значенийЗапись представляет объект Range - ячейку первого столбца i-ой строки. Объект Interior - цвет заливки ячейки. Свойство ColorIndex этого объекта - номер цвета из цветовой палитры.
(рис 6.2) Пример раскраски ячеек, значения которых имеют разные остатки от деления на 3При использовании в условии числового выражения нуль интерпретируется как False, а любое значение, отличное от нуля, как True. В условии можно проверить тип выражения или значение переменной, используя специальные функции:
| Функция | Синтаксис | Предназначена для проверки |
|---|---|---|
| IsArray | IsArray(VarName) |
является ли переменная VarName массивом |
| IsDate | IsDate(expression) |
является ли выражение expression датой или может ли быть преобразовано в дату |
| IsEmpty | |
инициализирована ли переменная expression или содержит ли выражение (переменная или ячейка) пустое значение |
| IsMissing | IsMissing(argname) |
пропущен ли аргумент argname процедуры. Используется в процедурах, имеющих необязательные параметры |
| IsNull | IsNull(expression) |
имеет ли выражение expression значение Null |
| IsNumeric | IsNumeric(expression) |
является ли |
| IsObject | IsObject(expression) |
является ли |
При необходимости анализировать большое количество условий в качестве альтернативы условному оператору If используется оператор Select Case, который создает более читабельную программу. Оператор Select Case - это
Синтаксис оператора
Select Case testexpression [Case expressionlist-n [statements-n]] ... [Case Else [elsestatements]] End Select
testexpression - тестируемое выражение. Обязательный элемент;Case задают возможные значения тестируемого выражения;expressionlist - список значений тестируемого выражения, который определяет выполняемую expressionlist-1, то выполняются операторы statements -1 и т.д.;Case Else определяет операторы, которые выполняются, если значение не найдено ни в одном списке;statements -n, elsestatements Значения списка могут быть представлены константами или выражениями, имеющими числовые или символьные значения. Элементы списка перечисляются через запятую или могут иметь одну из двух форм:
expression (To expression (верхняя граница) - задает диапазон значений списка: "от" и "до";Is comparisonoperator (оператор сравнения) - задает условие на значение тестируемого выражения, при справедливости которого выполняются последующие операторы.Case Else нет в операторе выбора и значение не найдено ни в одном списке, ни одна из End Select.Примеры
По сравнению с процедурой color_cells_if, записанной при помощи оператора If, новая процедура выглядит более лаконичной и прозрачной.
(рис 6.4) Пример применения оператора Select CaseПовтор действий в процедурах достигается при помощи организации циклов. Цикл - это многократно повторяемая
В языке Visual Basic используется несколько форм
Одни и те же действия по повтору команд можно записать различными способами, но в разных ситуациях удобнее использовать определенные способы организации циклов.
Оператор используется для организации вычисляемого цикла ( Counted Loop ), который применяется, если известно или может быть вычислено количество повторений.
Синтаксис оператора
For counter = start To end [Step step] [statements] [Exit For] [statements] Next [counter]
counter - переменная цикла (счетчик цикла);start - начальное значение переменной цикла;end - конечное значение переменной цикла;step - шаг цикла. Необязательное значение. По умолчанию шаг цикла равен единице;Exit For - оператор немедленного выхода из цикла;statements - набор повторяемых команд (тело цикла);Next - оператор окончания цикла.При первом входе в цикл счетчик цикла устанавливается в начальное значение ( start ). При каждом повторе к счетчику цикла прибавляется шаг цикла ( ). Как только значение переменной цикла превысит конечное значение, цикл завершается. Можно подсчитать, сколько раз выполнится цикл: например, если шаг цикла равен единице, то цикл выполняется end-start+1 раз и каждый раз с новым значением счетчика цикла.
counter - числовая переменная. Счетчик цикла обычно участвует в вычислениях внутри цикла.start, end, step могут быть заданы числами, числовыми переменными или числовыми выражениями.Next идентификатор счетчика цикла, так как в случае использования Exit For осуществляет немедленный выход из цикла независимо от значения счетчика цикла.Примеры
Переменная i (счетчик цикла) в процессе выполнения цикла меняет значение от 1 (устанавливается выражением i=1 ) до значения 5, заданного выражением To 5. Шаг изменения значений переменной i по умолчанию 1.
(рис 6.5) Распечатка в окне Immediate первых пяти целых чиселМожно было бы записать все операторы на одной строке, используя двоеточие как разделитель между операторамиFor i=1 To 5: Debug.Print i : Next i.
В процедуре используются два s=0, s=s+n. Первый оператор устанавливает начальное значение для суммы чисел, а второй наращивает эту сумму в процессе вычислений.
(рис 6.6) Пример суммирования чисел от 1 до 1000Цикл
Синтаксис оператора
For Each element In group [statements] [Exit For] [statements] Next [element]
element - переменная, значения которой суть элементы из группы;group - массив данных или группа объектов;statements - Exit For - оператор, осуществляющий немедленный выход из цикла.element должна быть переменной типа Variant.element - Object или должен совпадать с типом элементов For Each для группы объектов более эффективен, чем цикл For Next.Примеры
В вычисляемом цикле значения элементов массива устанавливаются равными номеру элемента массива.
В цикле i принимает значения элементов массива.
(рис 6.7) Суммирование элементов массиваПеременная Obj_range объявлена как объект Range и ее значение устанавливается оператором Set как ссылка на интервал ячеек A1:B6.
Переменная p (переменная цикла Obj_range, устанавливая их значения в номер элемента.
(рис 6.8) Заполнение интервала ячеек последовательными натуральными числамиЭтот цикл является логически прерываемым циклом. Цикл, организованный при помощи этой структуры, повторяет набор инструкций, пока выполнено некоторое условие. Такую форму цикла чаще всего используют в условиях неопределенности, когда нельзя заранее установить, сколько раз потребуется повторять действия. Например, если заранее неизвестно, скольким сотрудниками следует рассчитать зарплату, можно использовать оператор Do…Loop при условии, что значение некоторой переменной будет свидетельствовать об окончании расчета.
Синтаксис оператора
Do [(While|Until) condition] [statements] [Exit Do] [statements] Loop [(While | Until) condition]
condition - тестируемое выражение со значением True или False ;While - повтор операторов, пока условие ( condition ) истинно;Until - повтор операторов, пока условие ложно (пока условие не станет истинным).While эквивалентны циклам Until, в которых перед условием стоит Not:While condition = Until Not condition
Exit Do - оператор немедленного выхода из цикла;statements - По сути, оператор имеет пять вариантов синтаксиса. В первых двух вариантах While|Until проверяется в начале цикла. В следующих двух вариантах While|Until проверяется в конце цикла. Пятый вариант -
While|Until condition отсутствует, то в Exit Do.Exit Do всегда завершает внутренний цикл.Пример
Поиск первой непустой ячейки в первой строке
Рассмотрим два способа записи оператора ) и с условием в конце

(рис 6.10) Способ записи оператора Do…Loop с условием в начале оператора цикла(рис 6.9) Способ записи оператора Do…Loop с условием в конце оператора циклаАргумент ActiveSheet. функции IsEmpty определяет очередную ячейку первой строки активного листа. Оператор Exit Sub немедленно завершает процедуру, если просмотрены все 256 ячеек первой строки и непустая ячейка не найдена ( i=257 ).
После нормального выхода из цикла значение переменной i указывает на номер столбца, в первой строке которого обнаружена непустая ячейка. Последний оператор процедуры выделяет найденную ячейку.
В первом случае цикл выполняется до тех пор, пока ячейка пуста. Тестирование выполняется до входа в цикл. Во втором случае цикл выполняется до тех пор, пока ячейка не станет непустой. Тестирование выполняется в конце цикла.
Этот способ организации цикла повторяет команды, пока заданное условие верно. Он полностью эквивалентен циклу Do…Loop с условием While в первой строке оператора.
Синтаксис оператора
While condition statements Wend
condition - тестируемое выражение со значением True или False ;statements - Приведем процедуру расчета зарплаты с использованием этого
Выполняется проверка введенных значений h и r, если оба не равны нулю, то проводится расчет и запрос на ввод данных о следующем сотруднике. В противном случае цикл завершается.
(рис 6.11) Пример цикла While… Wend
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.