- •Использование макросов в табличных документах Теоретические сведения определение макроса
- •Основы работы в visual basic Основные понятия языка vba
- •Правила написания программ
- •Встроенные типы данных
- •Переменные
- •Массивы
- •Пользовательские типы данных
- •Объявление констант
- •Оператор комментариев
- •Процедуры
- •Операторы языка vba Оператор присваивания
- •Встроенные функции vba
- •Функции пользователя
- •Управляющие структуры
- •Условный оператор If.
- •Оператор выборки Select Case.
- •Оператор счетного цикла For-Next
- •Цикл Do-Loop
- •Цикл While-Wend
- •Цикл For Each
- •Возможности vba по созданию макросов Excel
- •Приемы работы в среде Visual Basic for Applications
- •Методические указания к выполнению работы Пример создания макроса
- •Порядок работы
- •Вариант 2. Письмо - поздравление
- •Вариант 3. Товарный чек
- •Вариант 4. Расчетный листок зарплаты
- •Порядок выполнения расчета.
- •Вариант 5. Комплектация изделия из составных частей
Цикл Do-Loop
Конструкция, позволяющая организовать как цикл с предусловием, так и цикл с постусловием. Имеет 4 модификации:
1) условие True в начале цикла (цикл с предусловием true)
Do While <условие>
<блок операторов>
Exit Do
<блок операторов>
Loop
Цикл выполняется до тех пор, пока истинно <условие>. Минимальное число повторений тела цикла - 0. Оператор Exit Do предназначен для прекращения цикла.
2) условие True в конце цикла (цикл с постусловием true)
Do
<блок операторов>
Exit Do
<блок операторов>
Loop While <условие>
Цикл выполняется хотя бы один раз, в конце выполняется проверка <условия>.
3) условие False в начале цикла (цикл с предусловием false)
Do Until <условие>
<блок операторов>
Exit Do
<6лок операторов>
Loop
Until указывает, что цикл выполняется до тех пор, пока <условие> не станет истинным. Минимальное число повторений тела цикла - 0.
4) условие False в конце цикла (цикл с постусловием false)
Do
<блок операторов>
Exit Do
<блок операторов>
Loop Until <условие>
Условие проверяется в конце, цикл прекращается, когда условие станет истинным. Цикл обязательно повториться хотя бы один раз.
Примеры написания циклов:
Текст программы |
Комментарий |
Sub Do_Proc() |
- объявление имени процедуры без параметров |
Dim A As Single; Dim I As Integer |
- объявление переменных |
Randomize |
- генератор случайных чисел |
Do While True |
- начало цикла Do. Условия выполнение цикла всегда истинно, т.е. цикл бесконечный |
A = Rnd |
- присвоение переменной случайных чисел |
Debug.Print a |
- печать случайного числа |
If A>0.99 Then Exit Do |
- условие - при его выполнении происходит выход из цикла |
Loop |
- конец цикла |
End Sub |
- конец процедуры |
Цикл While-Wend
Оператор полностью соответствует структуре Do While-Loop. Особенность оператора: 1) невозможно прервать выполнение цикла из тела цикла (Exit Do отсутствует), 2) проверка условия выполняется только в начале цикла.
While <условие>
<блок операторов>
Wend
Цикл For Each
Оператор работает с величинами объектного типа. Он применяется к массивам (элементам) и наборам объектов. Выполняется фиксированное число раз, число объектов в наборе определяется автоматически. Упорядочение элементов в наборе не требуется.
Синтаксис оператора:
For Each <элемент> In <набор>
<блок операторов>
Exit For
<блок операторов>
<элемент> - переменная типа Variant, <набор> - набор объектов. Для прерывания работы цикла используется оператор Exit For. Пример использования конструкция For Each … Next для итераций по всем ячейкам диапазона с именем MyRange на листе с порядковым номером 1 текущей книги Excel. Переменная, представляющая собой ячейку в семействе ячеек, содержащемся в MyRange:
Текст программы |
Комментарий |
Const lim As Integer = 10 For Each c In Worksheets(1).Range("MyRange").Cells If c.Value > lim Then With c.Font .Bold = True .Italic = True .Color = vbRed End With End If Next c MsgBox "Все сделано!" |
- объявление константы lim=10 - для каждой ячейки из диапазона MyRange - если значение в ячейке > lim, то - для шрифта ячейки задать - начертание: жирный - курсив - цвет - красный - конец оператора With - конец оператора If - конец оператора For - вывод сообщения |
Первая строка объявляет целую константу limit, равную 33. Вторая строка задает перебор ячеек диапазона MyRange на листе 1 текущей рабочей книги.
