![](/user_photo/2706_HbeT2.jpg)
- •Понятие процедур, функций, операторов, переменных
- •Переменные
- •Принципы и правила выбора имен для переменных
- •Типы переменных (данных)
- •Числовой тип
- •Строковый тип (текстовая строка)
- •Тип Date (дата)
- •Логический тип
- •Произвольный тип
- •Объектный тип
- •Создание переменных
- •Объявление переменной (variable declaration)
- •Требование явного объявления переменных. Область действия переменных. Константы. Правила написания констант. Операции и знаки операций Требование явного объявления переменных
- •Присваивание переменной (assigning the variable)
- •Область действия или видимости (scope - скауп) переменных
- •Использование переменных с одним и тем же именем в различных уровнях области действия
- •Правила того, как долго переменные удерживают свое значение
- •Константы
- •Создание именованных констант
- •Область действия констант
- •Написание констант
- •Операции и знаки операций
- •Получение приоритета:
- •Преобразование типов данных. Процедуры и функции. Типы операторов. Состав проекта Назначение типов данных
- •Преобразование типов данных
- •Преобразование числовых типов данных
- •Строковые переменные
- •Строки изменяемой и фиксированной длины
- •Преобразование числовых данных в строковые
- •Форматирование данных
- •Процедуры и функции
- •Аргументы
- •Примеры процедур
- •Функции
- •Обзор типов операторов
- •Операторы объявления
- •Операторы присваивания (инициализации)
- •Выполняемые операторы
- •Параметры компилятора
- •Состав проекта
- •Массивы. Классы объектов. Характеристики объектов. Объектная модель. Окно просмотра объекта. Комментарии. Управление потоком Массивы
- •Статические массивы
- •Динамические массивы
- •Пример работы с массивом
- •Классы объектов
- •Наследование
- •Полиморфизм
- •Инкапсуляция
- •Семейства объектов
- •Объектная модель
- •Использование Окна просмотра объектов
- •Замечания о комментариях
- •Управление потоком
- •Управление потоком (продолжение). Условные переходы. Циклы. Оператор With. Немедленный выход с помощью оператора Exit For Оператор Go to Примеры работы с двоичной логикой
- •Операторы условного перехода:
- •Оператор условного перехода If…Then
- •Пример использования условного перехода If…Then
- •Оператор условного перехода If…ElseIf
- •Оператор Select Case
- •Операторы циклов:
- •Повторение под управлением цикла For…Next
- •Пример вложенных циклов For…Next
- •Важные замечания по поводу циклов For…Next
- •Использование оператора цикла For Each… Next
- •Циклы Do…Loop
- •Типы оператора цикла Do…Loop
- •Пример оператора Do While (условие) Loop
- •Использование оператора Do …Until Loop (условие)
- •Использование оператора With
- •Использование оператора Is
- •Немедленный выход с помощью оператора Exit For
- •Управление потоком с помощью оператора Go To
- •«Ввод-вывод данных. Системные функции InputBox и MsgBox» Функции InputBox и MsgBox
Операторы циклов:
- For…Next - заданное число раз;
- For Each…Next - для каждого объекта из семейства объектов;
- Do…Loop - до тех пор, пока некоторое условие имеет значение True.
Циклы могут быть вложенными: один – внутри другого.
При работе с вложенными циклами существует простое правило: внутренний цикл должен закончиться раньше, чем начнется внешний.
Повторение под управлением цикла For…Next
Если перед выполнением цикла известно, сколько раз он должен выполняться, то используйте цикл For…Next. Число проходов цикла задается значениями начало и конец, которые могут быть целыми числами, переменными и даже сложными выражениями.
В процессе выполнения переменная счетчик хранит информацию о числе выполненных проходов цикла. Синтаксис:
For имя счетчика = начало To конец
(операторы, выполняющиеся при каждом проходе цикла)
Next имя счетчика
Sub СчётДоДесяти( )
Dim j As Integer
For j = 1 To 10
Debug.Print "Дубль № " & j
Next j
End Sub
Пример вложенных циклов For…Next
Dim sngC ' переменная C предназначается на роль "случайного числа"
Randomize ' инициализация генератора случайных чисел (рандомайз).
For A = 1 To 5
sngC = Rnd( )
For B = 1 To 10
Debug.Print sngC * Rnd( )
Next B
Next A
Операции, которые выполняет программа:
-
предварительная подготовка – код начинается с объявления переменной sngC и инициализации генератора случайных чисел;
-
начало внешнего цикла For…Next: VBA вызывает функцию Rnd, чтобы присвоить переменной sngC случайное значение;
-
начало внутреннего цикла For…Next: этот цикл вычисляет 10 других чисел повторяя вызов функции Rnd при каждом проходе цикла. Результат отображается в окне Immediate отладки (Debug);
-
завершение внутреннего цикла после выполнения им всех 10 вычислений.
Теперь снова продолжается выполнение внешнего цикла. Подчиняясь оператору Next A, программа возвращается к началу внешнего цикла; шаги второй и третий повторяются еще 4 раза.
Таким образом, например, составляя программу воспроизведения музыкальных произведений, можно сформировать случайный выбор 10 фрагментов из 5 компакт-дисков.
Оператор For… Next особенно важен при работе с массивами, например, при заполнении массива множеством вычисленных значений:
Sub Квадрат ()
Dim intКвадраты (14) As Integer
For a = 0 To 14
intКвадраты (a) = a * a
Next a
End Sub
Оператор For…Next очень удобно также использовать при обработке многомерных массивов, если организовать вложенные циклы так, чтобы каждый из них соответствовал одному измерению массива.
Важные замечания по поводу циклов For…Next
Старайтесь для ясности начинать цикл For… Next с единицы.
Исключения могут быть, когда идет работа с массивом.
В этом случае начало выбирается равным 0.
В операторе Next имя счетчика, завершающем цикл For… Next, имя переменной счетчика указывать необязательно, т. к. ключевое слово Next автоматически вычислит следующее значение счетчика и отошлет программу в начало структуры.
Однако всё-таки необходимо приучить себя включать имя счетчика в оператор Next, т. к. при этом даже в случае нескольких вложенных циклов For… Next можно сразу опознать, какому циклу принадлежит данный оператор Next.
Следует помнить, что, стоит допустить ошибку со счетчиком, и можно либо пропустить пару важных шагов, либо заставить цикл повторяться бесконечно.