
- •Cвойство Range
- •Первый способ
- •Второй способ
- •Запомните
- •Свойство Cells
- •Замечания
- •Свойство Offset
- •Метод Union и свойство Areas
- •Свойства Column и Row (r/o Integer)
- •Свойства Columns и Rows
- •Свойство CurrentRegion
- •Замечание
- •Свойство Address
- •Методы Методы Select и Activate
- •Метод Clear
- •Задание 1
- •Задание 2
- •Математические функции
- •Функции преобразования данных
- •Функции даты и времени
- •Строковые функции
- •Пользовательские функции
- •Задание
- •Ветвления
- •Ветвления. Сложные условия
- •Оператор выбора
- •Задание 1
- •Цикл со счетчиком
- •Выход из циклов и процедур
- •Вложенные циклы
- •Цикл For Each … Next
- •Одномерные массивы
- •Многомерные массивы
- •Статические и динамические массивы
- •Объявление массивов
- •Изменение размерности динамического массива
- •Использование свойств объектов
- •Использование методов объекта
- •Объектные переменные
- •Ссылка на объекты с помощью With...End With
- •Dim fName As String 'имя файла-копии
- •Работа с коллекциями объектов и контейнерами объектов
- •Задание 1
- •Задание 2
- •Обработчики событий
- •Задание 3
- •Задание 4
- •Задание 5
Вложенные циклы
В ранее рассмотренных примерах рассматривались диапазоны, являющееся частью строки и столбца. Для работы с этими диапазонами достаточно было одного цикла, в котором перебирались номера строк или номера столбцов. В общем случае диапазон состоит из нескольких строк и столбцов.
Задание 1
В заданном диапазоне получить целые числа из интервала от -100 до 100.
Задание 2
Выделить красным цветом минимальный элемент в заданном диапазоне.
В рассмотренных выше заданиях перебор ячеек выполнялся построчно. Иногда требуется изменить порядок просмотра.
Задание 3
В заданном диапазоне подсчитать количество отрицательных значений в каждом столбце, и записать это количество в конце каждого столбца. Для этого примера надо изменить порядок просмотра: при фиксированном столбце перебирать ряды.
Цикл For Each … Next
Цикл For Each..Next не использует счетчик цикла. Циклы For Each..Next выполняются столько раз, сколько имеется элементов в определенной группе. Цикл For Each..Next выполняется один раз для каждого элемента в группе.
For Each <элемент> In <группа> <операторы>
Next
В нашем случае элемент – это ячейка, а группа – это выделенный диапазон.
Задание 4
В заданном диапазоне чисел закрасить ячейки с нулями желтым цветом.
Использование цикла For Each..Next зачастую сокращает код программы по сравнению с вложенными циклами.
Задание 5
Приведем пример программы нахождения минимума с использованием цикла For Each..Next.
Массив - это коллекция переменных, которые имеют общие имя и базовый тип. Все элементы данных, сохраняемых в массиве, должны иметь один и тот же тип. Информация, сохраненная в массиве, может быть доступна в любом порядке.
Массив позволяет сохранять и манипулировать многими элементами данных посредством единственной переменной. Обработку массивов значительно упрощает использование циклов.
Одномерные массивы
Одномерный массив - это самый простой вариант массива, использующий обыкновенный список данных. Например:
Вася, Петя, Коля, Миша, Ваня, Слава, Игорь, Юра, Саша, Вова
Это строковый массив, состоящий из 10 элементов. Дадим ему название My_Array.
Нумерация элементов в массиве начинается с 0. Такая система нумерации довольно распространена в программировании и называется нумерацией с нулевой базой.
Для доступа к данным, хранящимся в определенном элементе массива, следует указывать имя массива с последующим числом, называемым индексом элемента. Индекс всегда заключается в круглые скобки. Например: My_Array(3) - этому элементу нашего массива соответствует "Миша" (не забывайте, что по умолчанию нумерация элементов массива начинается с 0).
Поскольку нумерация с нулевой базой не очень удобна (т.к. мы привыкли считать с 1, а не с 0), то в VBA имеется директива компилятора, позволяющая исправить это "неудобство": Option Base.
Директива компилятора имеет два варианта написания:
Option Base 0 - индексы массивов начинаются с 0 (установка по умолчанию)
Option Base 1 - индексы массивов начинаются с 1
Данная директива компилятора помещается в область объявлений модуля перед объявлениями любых переменных, констант или процедур. Нельзя помещать Option Base внутри процедуры. Можно иметь только один оператор Option Base в модуле, который влияет на все массивы, объявляемые в модуле.