Вывод суммы значений из выделенного диапазона
В строку состояния
Обрабатывая событие SelectionChange объекта Worksheet можно сделать так, чтобы в строку состояния выводилась, например, сумма значений из выделенного диапазона. Для этого надо воспользоваться свойством StatusBar объекта Application, как показано в следующем коде (листинг 5.39) из модуля рабочего листа, в котором задается текст, отображаемый в строке состояния. Если значение этого свойства устанавливается равным False, то в строке состояния отображается текст, заданный по умолчанию.
Листинг 5.39. Вывод суммы значений из выделенного диапазона в строку состояния.
Модуль рабочего листа
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim s As Double
s = Application.WorksheetFunction.Sum(Target)
If s <> 0 Then
Application.StatusBar = FormatNumber(s, 3)
Else
Application.StatusBar = False
End If
End Sub
Объекты Range и Selection
В иерархии MS Excel объект Range (диапазон) идет сразу после объекта Worksheet. Объект Range является одним из ключевых объектов VBA. Объект Selection возникает в VBA двояко — либо как результат работы метода
Select, либо при вызове свойства Selection. Тип получаемого объекта зависит от типа выделенного объекта. Чаше всего объект Selection принадлежит классу Range, и при работе с ним можно использовать свойства и методы объекта Range. Объект.Range возвращается либо как элемент семейств
Range или Cells, либо свойствами Range, Cells И Offset, либо методами ActiveCell, Intersect и Union.
Адресация ячеек
При работе с объектом Range необходимо помнить, как в MS Excel ссылаются на ячейку рабочего листа. Имеются два способа ссылки на ячейки рабочего листа:
|
|
r относительная адресация (табл. 5.14), т. е. когда начало координат, задающее нумерацию строк и столбцов, связывается с объектом, вызвавшим Range;
r абсолютная адресация (табл. 5.15).
Таблица 5.14. Относительная адресация
Формат | Описание |
А 1 | Имя ячейки состоит из имени столбца (их 256 — А, В, ..., Z, АВ..... HZ, IA,..., IV) и номера (1, ..., 16 384). Например, А1 или С2 |
R1C1 | Адресация задается индексом строки и индексом столбца. Например, R 1 C 1 иили R 2 C 3 |
Таблица 5.15. Абсолютная адресация
Формат | Описание |
А 1 | Признаком абсолютной адресации является знак $, предшествующий имени строки (абсолютная адресация на строку) или столбца (абсолютная адресация на столбец). Например, $А10, А$10 и $А$10 задают абсолютную адресацию на столбец А, строку 10 и ячейку А 10 соответственно |
R1C1 | Указывается смещение по отношению к активной ячейке. Смещение приводится в квадратных скобках, причем знак указывает на направление смещения. Например, если активной ячейкой является R 2 C 3, то R[1] С[-1] дает ссылку на ячейку R 3 C 2 |
Адресация ячейки рабочего листа является лишь частью полного адреса ячейки, который в общем случае включает имя рабочего листа и адрес книги. При задании полного адреса за именем листа следует знак !, а адрес книги заключается в скобки.
|
|
Например:
A1
Лист2!А1
[МояКнига.XLS]Лист2!Al
В первой строке данного примера дана относительная ссылка на ячейку А1 активного рабочего листа, во второй — на ячейку А1 рабочего листа Лист2 активной книги, а в третьей на ячейку А1 рабочего листа Лист2 книги МояКнига.xls текущего рабочего каталога.
Задание групп строк и столбцов
Если в диапазоне указываются только имена столбцов или строк, то объект Range задает диапазон, состоящий из указанных столбцов или строк. Например, Range ("А:C") задает диапазон, состоящий из столбцов А, В и С, а Range("2:2") — из второй строки. Другим способом работы со строками и столбцами являются свойства рабочего листа Rows и Columns, возвращающие семейства строк и столбцов. Например, столбцом А является Columns(1), a второй строкой— Rows(2) .
Связь объекта Range
И свойства Cells объекта Worksheet
Ячейка — это частный случай диапазона, который состоит из единственной ячейки. Поэтому естественно, что объект Range позволяет работать как с диапазоном ячеек, так и с одной ячейкой.
Альтернативным способом работы с ячейкой является свойство Сells объекта worksheet. Например, ячейку А2 как объект можно описать двумя равносильными способами :
|
|
Range ("А2") и
Cells (1, 2).
В свою очередь ячейка, возвращаемая свойством Сells, используемым как параметр объекта Range, позволяет записывать диапазон в альтернативном виде, который иногда удобен для работы. В качестве примера этой формы записи диапазона приведем следующие две инструкции, возвращающие один и тот же диапазон:
Range("А2:СЗ")
Range(Cells(l,2), Cells(3,3))
Примечание
Диапазон также как и рабочий лист, обладает свойством 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 позволяют управлять им от внешнего вида до автоматизации вычислений. В последующих разделах на содержательных примерах досконально разобраны следующие свойства этого объекта.
Дата добавления: 2019-02-12; просмотров: 186; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!