
- •Объектная модель
- •Полная и неявная ссылка на объект
- •Ссылка на активную рабочую книгу, лист, ячейку, диаграмму и принтер
- •Загрузка инсталлированной надстройки
- •Управление уровнем безопасности
- •Семейство встроенных диалоговых окон
- •Объект FileDialog
- •Методы объекта Application
- •Установка выполнения специфицированной процедуры при нажатии заданной комбинации клавиш
- •Переопределение горячих клавиш приложения
- •Проверка правописания отдельного слова
- •Симулирование ячеек рабочего листа
- •Электронные часы в ячейке рабочего листа
- •Получение данных из закрытой рабочей книги
- •События объекта Application
- •IgnoreReadOnlyRecommended — необязательный параметр, указывающий надо ли отображать предупреждение о том, что книга была сохранена в режиме "только для чтения";
- •Установка и снятие защиты книги
- •Методы объекта Worksheet
- •Объект Protection
- •События объекта Worksheet
- •Добавление к графическому объекту обработчика события Click
- •Примечание
- •Свойства объекта Range
- •Управление стилем границы диапазона и объекта Border
- •Функции rgb и qbColor
- •Доступ к отдельным ячейкам диапазона
- •Выбор элементов на рабочем листе или в книге
- •Объект Characters
- •Объект Comment
- •Определение текущего диапазона
- •Объект Font
- •Объект Interior
- •Установка числового формата
- •Переопределение размеров диапазона
- •Методы объекта Range
- •Табуляция функции
- •Заполнение диапазона по одному значению
- •Специальная вставка
- •Вставка диапазона с транспонированием
- •Бегущая картинка
- •Поиск значения в диапазоне
- •Повторный поиск и поиск всех значений
- •Поиск по формату
- •Замена значений
- •Ввод в диапазон неповторяющихся значений
- •Озвучивание текста
- •Построение графа
- •Пользовательские функции
- •Математические функции
- •Надстройки
- •Где хранятся макросы?
Примечание
Диапазон также как и рабочий лист, обладает свойством Cells, которое, если используется без параметров, возвращает множество всех ячеек, входящих в диапазон. Если же оно указывается с параметрами, то возвращает конкретную ячейку из диапазона. Например, в следующем примере значение 2 вводится в ячейку СЗ:
Range("В2:D4").Select
Selection.Cells(2, 2).Value = 2
При работе с объектом Range допустимо использование именных диапазонов. Предположим, если определен диапазон с именем отчет, то на него можно ссылаться следующим образом:
Range("Отчет")
Если имеются две ячейки, именованные FirstCell и LastCell, то минимальный прямоугольный диапазон, содержащий эти ячейки, может быть описан следующим образом:
Range(Range("FirstCell"), Range("LastCell"))
При работе с диапазонами допустима ссылка на них по их имени, окруженным квадратными скобками, что является сокращенной записью метода Evaluate объекта Application:
[В1]
[А1:С5]
[А1:А10,С1:С10]
[Продажи]
Ссылка на диапазон неактивного рабочего листа производится так:
Worksheets("Май").Range("Отчет") Worksheets("Май").Range("А1")
Свойства объекта Range
Объект Range позволяет сочетать гибкость VBA и мощь рабочего листа. Огромное число встроенных функций рабочего листа существенно упрощают и делают более наглядным программирование на VBA. Свойства объекта Range позволяют управлять им от внешнего вида до автоматизации вычислений. В последующих разделах на содержательных примерах досконально разобраны следующие свойства этого объекта.
-
Address
AllowEdit
Areas
Borders
Cells
Characters
Column
Columns
ColumnWidth
Comment
Count
CurrentRegion
End
EntireColumn
EntireRow
Font
Formula
FormulaArray
FormulaHidden
FormulaLocal
FormulaR1C1
FormulaRlClLocal
HasFormula
Height
Hidden
HorizontalAlignment
Hyperlinks
Interior
Left
Locked
Name
NumberFormat
Offset
Orientation
Resize
Row
RowHeight
Rows
ShrinkToFit
Top
UseStandardHeight
UseStandardWidth
Value
VerticalAlignment
Width
Worksheet
WrapText
Ввод или считывание значения из диапазона
Свойство Value объекта Range возвращает или устанавливает значение в ячейках диапазона. В первой инструкции приведенного далее примера переменной х присваивается значение из ячейки С1, во второй — в ячейку СЗ вводится строка "Отчет", а в третьей — в каждую из ячеек диапазона А1:В2 вводится 1.
х = Range("CI").Value
Range("СЗ").Value = "Отчет"
Range("A1:B2").Value = 1
Поиск по шаблону подобных значений в диапазоне
Последовательный перебор ячеек диапазона и сравнение с помощью оператора Like возвращаемых значений свойства Value с шаблоном позволяют реализовывать поиск подобных значений в диапазоне. Например, в следующем коде последовательно просматриваются все ячейки диапазона А1:А100. В тех из них, в которые входит значение ms, содержимое ячейки заменяется словом Microsoft, сама же ячейка заливается желтым цветом, в то время как все остальные ячейки — белым цветом.
Dim с As Range
For Each с In [A1:A100]
If с Value Like "*MS*" Then
c.Value = "Microsoft"
с.Interior.Color = RGB(255, 255, 0)
Else
c.Interior.Color = RGB(255, 255, 255)
End If
Next
Ввод или считывание формулы в ячейку в формате А1
Свойство Formula объекта Range возвращает или устанавливает формулу в диапазон в формате А1. Например, в следующем примере первая инструкция вводит в ячейку С1 формулу =$A$1+$B$1, а вторая — в ячейку С2 формулу =SIN(А2)^2.
Range("C1").Formula = "=$А$1+$В$1"
Range("C2").Formula = "=SIN(A2)A2"
Ввод или считывание формулы в ячейку в формате R1C1
Свойство FormulaR1C1 объекта Range возвращает формулу в формате R1C1. Например, следующая инструкция вводит в ячейку В1 формулу =2*R3C2 в R1C1-формате, или, что эквивалентно, формулу =2*$B$3 в формате А1.
Range("Bl").FormulaRlCl = "=2*R3C2"
Ввод или считывание формулы локальной версии в ячейку в формате А1
Свойство FormulaLocal объекта Range возвращает формулу локальной версии в формате А1. Например, следующая инструкция вводит в ячейку В2 формулу =сумм(c1: с4).
Range("В2").FormulaLocal = "=СУММ(C1:C4)"
Ввод или считывание формулы локальной версии в ячейку в формате R1C1
Свойство FormulaR1C1Local объекта Range возвращает формулу локальной версии в формате R1C1. Например, следующая инструкция вводит в ячейку В2 формулу =сумм(c1: с4) в формате R1C1.
Range ("B2") .FormuiaR1C1Local = "= СУММ(R1C3:R4C3)"
Ввод формулы массива в диапазон
Свойство FormulaArray объекта Range возвращает формулу диапазона в формате А1. В отличие от обыкновенной формулы рабочего листа, формула массива вводится на рабочем листе не нажатием клавиши <Enter>, а комбнацией клавиш <Ctrl>+<Shift>+<Enter>. Например, следующая инструкция вводит в диапазон Е1:ЕЗ формулу {=А1:АЗ*3}:
Range("E1:E3").FormulaArray = "=А1:АЗ*3"
Ввод формулы массива локальной версии в диапазон
При вводе формулы массива с функциями рабочего листа локальной версии формулу надо представить в формате R1C1, и вместо формулы локальной версии использовать формулу базовой версии. Например, следующая инструкция вводит в ячейку D1 формулу {=сумм($а$1:$в$1*3)}:
Range("D1").FormulaArray = "=SUM(R1C1:R1C2*3)"
Ввод формулы массива в диапазон с
относительными ссылками на ячейки
Для ввода формулы с относительными ссылками на ячейки необходимо использовать относительную адресацию в формате R1C1. Например, ввод формулы {=сумм(А1:В1*з) } в ячейку D1 производится следующей инструкцией:
Range("D1").FormulaArray = "=SUM(RC[-3]:RC[-1]*3)"
Определение адреса ячейки
Свойство Address объекта Range возвращает адрес диапазона.
Address[RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)
Здесь:
RowAbsolute — необязательный параметр, принимающий логические значения. Если значение параметра равно True или параметр опущен, то возвращается абсолютная ссылка на строку;
ColumnAbsolute — необязательный параметр, принимающий логические значения. Если его значение равно True или параметр опущен, то возвращается абсолютная ссылка на столбец;
ReferenceStyle — необязательный параметр. Допустимы два значения — xlA1 и xlR1C1, если xlA1 или xlR1C1 опущены, то возвращается ссылка в формате А1;
External — необязательный параметр, принимающий логические значения и определяющий, является ли ссылка внешней;
RelativeTo— необязательный параметр. В случае если значения параметров RowAbsolute и ColumnAbsolute равны False, a ReferenceStyle — xlR1C1, то данный параметр определяет начальную ячейку диапазона, относительно которой производится адресация.
Следующий код (листинг 5.40), обрабатывающий событие SelectionChange объекта Worksheet, демонстрирует возвращаемые свойством Address значения при различных установках его параметров.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox Target.Address/) & vbCr & _
Target.Address(RowAbsolute:=False) & vbCr & _
Target.Address(ReferenceStyle:=xlRlCl) & vbCr & _
Target.Address(ReferenceStyle:=xlRlCl, RowAbsolute:=False, ColumnAbsolute:=False, RelativeTo—Worksheets(1).Cells(2, 2)) End Sub
Например, если на рабочем листе будет выбрана ячейка А1, то на экране отобразится окно со следующим сообщением:
$А$1
$А1
R1C1
R[-1]C[-1]