Объектно-ориентированный подход в программировании. Проектирование и реализация приложений в среде Microsof Office. Евсеева О.Н. - 57 стр.

UptoLike

Составители: 

1.3. Visual Basic for Applications 58
3
With ячейка.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End If
Next ячейка
End Sub
В операторе Dim объявлена переменную "ячейка" как объект. Для каждой
ячейки из текущего выделения выполняются следующие действия: проверяется
значение этой ячейки, и если ячейка пуста, то она закрашивается желтым
цветом (цвет номер шесть в стандартной палитре цветов рабочей книги).
Приведенный пример демонстрирует также использование вложенных
операторовв оператор цикла For Each...Next вложен оператор
ветвления If...End If, в который, в свою очередь, вложен еще один
заслуживающий особого внимания операторWith...End With,
пришедший в Basic из языка программирования Pascal. Этот оператор
позволяет указать конкретный объект, над которым будут выполняться
действия в теле этого оператора. Поскольку в VBA объекты обычно имеют
множество различных свойств, часто приходится изменять значения сразу
нескольких свойств одного и того же объекта, как в данном случае; при этом
полная ссылка на объект может быть достаточно длинной, а повторять ее
приходилось бы помногу раз.
Рассмотрим еще один пример использования подобного оператора для
обработки всех элементов многомерного массива. Пусть имеется трехмерный
числовой массив из 1000 элементов (размерами 10*10*10), который нужно
заполнить случайными вещественными числами в диапазоне от 0 до 1. Если
использовать обычные циклы For ... Next со счетчиками, применяя
счетчики в качестве индексов элементов массива, то для обработки и
заполнения такого массива потребовалось бы написать три вложенных цикла
For ... Next. На самом деле для выполнения задачи достаточно всего
одного цикла For Each ... Next:
Dim tArray(10, 10, 10) As Single
Dim elem As Variant
Randomize
For Each elem In tArray
elem = Rnd()
Next