
- •3. Понятие макроса
- •Описание динамического массива
- •11. Арифметические выражения.
- •Логические выражения
- •12. Если выражение содержит больше одного оператора, то вычисление значения та-
- •Оператор If…Then…Else
- •Правила
- •24. В программах на vba очень часто приходится преобразовывать значения из одного типа данных в другой. Приведу несколько типичных ситуаций, когда этим приходится заниматься:
- •25. Самой простой способ вывести информацию пользователю— воспользоваться встроенной функцией vba MsgBox().Полный ее синтаксис выглядит так:
- •26. Элементы управления vba, добавление элементов управления на форму. Форма
- •27.Основные свойства форм.
- •Объект Worksheet и семейство Worksheets
- •51. Приостановите выполнение программы.
- •Окно проектов
Оператор If…Then…Else
Синтаксис:
Вариант_1:
If Условие Then Операторы1 Else Операторы2
Вариант требует написания оператора в одну строку, при этом в секциях Операторы1 и Операторы2 можно указывать несколько операторов, разделяя их двоеточием.
Вариант 2:
If Условие Then
Операторы1
Else
Операторы2
End If
Вариант позволяет указывать несколько операторов в разных строках
Логика работы следующая: VBA сначала оценивает логическое выражение, представленное в секции «Условие» ; если это логическое выражение равно True то выполняется оператор (операторы) секции «Операторы1» ; затем VBA продолжает выполнение кода следующего за строкой If..Then (Вариант 1) или за ключевыми словами End If (Вариант 2). Если же логическое выражение равно False, то выполняются операторы секции «Операторы2».
Возможно использование нескольких условных операторов в одном блоке:
Вариант 1:
If условие1 Then
[операторы первой истиной ветви]
If условие2 Then [операторы второй истиной ветви]
….
Else
[операторы ложной ветви]
End if
Простое вложение условных операторов друг в друга
Вариант 2:
If условие1 Then
[операторы первой истиной ветви]
ElseIf условие2 Then
[операторы второй истиной ветви]
…..
Else
[операторы ложной ветви]
End If
Сложное вложение. Сначала проверяется условие1 и при True выполняются операторы первой истиной ветви, затем (если условие 1 = False) проверяется условие 2 и если оно True то выполняются операторы второй истиной ветви. Если и первое и второе условие False , то выполняются операторы ложной ветви.
15. В VBA применяется еще один operator условного перехода типа Select Case. Этот operator позволяет осуществить выбор альтернативного варианта, сравнивая значение с различными выражениями.
Синтаксис оператора условного перехода Select Case имеет вид:
Select Case значение
....Case <условие1>
... ...<операторы1>
....Case <условие2>
.......<операторы 2>
..............................
....Case <условиеL>
.......<операторыL>
....Case Else
.......<операторM>
End Select.
В этом условном операторе значение переменной сравнивается с каждым из значений, которые хранятся в выражениях каждого из условий. Если значение переменной удовлетворяет одному из значений условия, будут выполняться operators, следующие за этим условием. Затем будет выполняться operator, следующий за ключевым словом End Select. Если значение переменной не удовлетворяет ни одному из значений условий, то выполняется "операторМ", следующий за оператором Case Else.
16. Какие либо действия процедуры повторяющиеся заданное количество раз или пока выполняется или не выполняется некоторое условие называют циклом.
Процесс выполнения все операторов, заключенных в структуру цикла, один раз называется итерацией цикла.
Структуры цикла, всегда выполняющиеся заданное количество раз, называются циклами с фиксированным числом итераций. Другие типы структур цикла повторяются переменное количество раз в зависимости от некоторого набора условий. Такие циклы называются неопределенными циклами.
Блок операторов, находящийся между началом и концом цикла называется "тело цикла".
Самой простой структурой цикла является фиксированный цикл.
Циклы: Цикл For..Next, For Each..Next, Do…Loop, Do While и Do Until
17. Цикл For..Next
Синтаксис
For counter = Start To End [Step StepSize]
Statements
Next [counter]\
Counter - любая численная переменная VBA
Start - любое численное выражение , определяет начальное значение для переменной counter
End - численное выражение, определяет конечное значение для переменной counter
Statements - один, несколько или ни одного оператора VBA (тело цикла).
По умолчанию VBA увеличивает переменную counter на 1 каждый раз при выполнении операторов в цикле. Можно задать другое значение (SterSize - любое численное выражение), на которое будет изменяться counter.
Ключевое слово Next сообщает VBA о том, что достигнут конец цикла. Необязательная переменная counter после ключевого слова Next должна быть той же самой переменной counter, которая была задана после ключевого слова For в начале структуры цикла.
Обратите внимание! При уменьшении счетчика цикла For..Next цикл выполняется, пока переменная счетчика больше или равна конечному значению, а когда счетчик цикла увеличивается, цикл выполняется, пока переменная счетчика меньше или равна конечному значению.
18. Цикл For Each..Next не использует счетчик цилка. Циклы For Each..Next выполняются столько раз, сколько имеется элементов в определенной группе, такой как коллекция объектов или массив (которые будут рассматриваться позже). Проще говоря, цикл For Each..Next выполняется один раз для каждого элемента в группе.
Синтаксис
For Each Element In Group
Statements
Next [Element]
Element - переменная, используемая для итерации по всем элементам в определенной группе
Group - это объект коллекции или массив
Statements - один, несколько или ни одного оператора VBA (тело цикла).
Цикл For Each..Next всегда выполняется столько раз, сколько имеется элементов в определенной группе.
В нижеприведенном листинге показана функция SheetExists, использующая цикл For Each..Next для определения того, существует ли определенный лист в рабочей книге Excel.
19.Do…Loop. Это очень простая вещь. Цикл работает до тех пор, пока не выполнится какое-нибудь условие. Например мы будем увеличивать переменную X до тех пор, пока оне не станет равной, например, 100. Для этого применяется аргумент Until:
Do Until x>=100
x=x+1
Loop
при этом когда цикл закончится x будет равно 100. Можно записать его по другому, при этом смысл работы цикла не изменится:
Do
x = x + 1
Loop Until x >=100
Можно цикл записать наоборот, и он будеn выполняться до тех пор, пока соблюдается какое-то условие. Для этого применяется аргумент While (делать, пока...) :
Do While x < 100
x = x + 1
Loop
или же:
Do
x = x + 1
Loop While x < 100
Во всех четырех случаях результат будет один. Цикл остановится, когда X=100. Только надо обращаться с ними аккуратно. Если ты поставишь условие, которое изначально ложно, цикл не выполнится ни разу, и наоборот если условие будет истинно всегда, возникнет бесконечный цикл и программа по-сути зависнет. Вот этот цикл не будет выполняться:
Do While x =100
x = x + 1
Loop
а этот будет бесконечным:
Do Until x < 0
x = x + 1
Loop
20. With...End With позволяет выполнить ряд операторов с указанным объектом без повторного указания имени объекта. Если классификационный путь к объекту слишком длинный, использование With...End With может повысить производительность. Блок With также уменьшает количество повторных наборов классификационного пути и риск неверного ввода одного из его элементов.
Например, чтобы изменить ряд различных свойств одного объекта, поместите операторы присваивания свойств внутрь блока With...End With, сославшись на объект лишь единожды, а не на каждом свойстве.
(Без понятия надо иль нет)