Объект Range: свойства и методы, возвращающие объект Range
Существует четкая логика в том, как создаются объекты Range. В Word Объекты верхнего уровня, например, Document, имеют метод Range, позволяющий создать новый диапазон. Объекты более низкого уровня, например Paragraph, имеют свойство Range, возвращающее диапазон, связанный с объектом. В Excel ситуация другая. Все объекты Excel имеют только свойство Range. Это свойство имеют и верхний в иерархии объект Application и Worksheet и сам объект Range, представляющий объекты нижнего уровня вплоть до ячейки. Свойства, возвращающие объект Range: Range, Cells, Columns, Rows. Понятно, что с помощью, например, свойства Range можно выделить некоторую область не только из области заданной рабочим листом, но и из любой подобласти, определенной объектом Range. Это же относится и ко всем другим свойствам, возвращающим объект Range, напоминающий матрешку. Hyperlinks - возвращает коллекцию гиперссылок, принадлежащих области объекта Range.
Объект Range:свойство Range. Объект Range позволяет сочетать гибкость VBA и мощь рабочего листа Excel. Более 400 встроенных функций рабочего листа существенно упрощают и делают более наглядным программирование на VBA. Далее приводятся наиболее часто используемые свойства и методы объекта Range. Перечислим основные свойства объекта Range.
Объект Range:свойство Cells Offset. Свойство Cells Другим способом сослаться на диапазон является использование свойства Cells. Как и Range, вы можете использовать свойство Cells в объектах Worksheet и Range. Справочная система указывает на три варианта синтаксиса свойства Cells: объект. Cells (номер_строки, номер_столбца); объект. Cells (номер_строки); объект. Cells. Проиллюстрируем на примерах особенности применения свойства Cells. Вначале в ячейку А1 листа Лист1 введите значение 9. В данном случае используется первый синтаксис, где аргументами являются номер строки (от 1 до 65536) и номер столбца (от 1 до 256): Worksheets ("Лист1"). Cells (1, 1)= 9 Ниже приведен пример, в котором значение 7 вводится в ячейку D 3 (т.е. пересечение строки 3, столбца 4) активного рабочего листа: ActiveSheet. Cells (3, 4) = 7 Вы можете также использовать свойство Cells объекта Range. При этом объект Range, который возвращается свойством Cells, задается относительно левой верхней ячейки диапазона Range, на который мы ссылаемся. Сложно? Может быть. Приведем пример. Следующая инструкция вводит значение 5 в активную ячейку. Помните, что в данном случае активная ячейка рассматривается как ячейка А1 на рабочем листе: ActiveCell. Cells (1, 1) = 5 Настоящее преимущество представленного типа ссылок на ячейки станет очевидным, когда речь пойдет о переменных и циклах. В большинстве случаев в аргументах не будет использоваться фактическое значение. Вместо него используется переменная. Чтобы ввести значение 5 в ячейку, которая находится под активной, можно обратитесь к такой инструкции: ActiveCell. Cells (2, 1) = 5 Предыдущий пример можно описать так: необходимо начать с активной ячейки, рассматривая ее как ячейку А1. Затем обратиться к ячейке во второй строке и первом столбце.
Иной синтаксис метода Cells использует один аргумент, который задается в диапазоне от 1 до 16777216. Второе число равно количеству ячеек на рабочем листе (65536 строк умножить на 256 столбцов). Ячейки нумеруются, начиная с А1 вправо, затем вниз и вправо вдоль следующей строки. 256-я ячейка — это IV 1. а 257-я — А2. Далее в ячейку НЭ активного листа (520-ю ячейку на рабочем листе) введем значение 2: ActiveSheet. Cells (520) = 2 Чтобы отобразить значение в последней ячейке на рабочем листе (IV 65536), используйте оператор MsgBox ActiveSheet. Cells (16777216) Этот синтаксис можно использовать и с объектом Range. В таком случае будет получена ячейка по отношению к указанному объекту Range. Например, если объект Range — это диапазон A 1-. D 10 (40 ячеек), то свойство Cells может иметь аргумент от I до 40 и возвращать одну из ячеек объекта Range. В следующем примере значение 2000 вводится в ячейку А2, так как А2 является пятой ячейкой (считая сверху направо, затем вниз) в указанном диапазоне: Range (" Al: D 10"). Cells {5) =2000 В предыдущем примере аргумент свойства Cells не ограничен значениями между 1 и 40. Если аргумент превышает количество ячеек в диапазоне, счет продолжается, будто диапазон больше, чем он есть на самом деле. Следовательно, оператор, подобный предыдущему, может изменить значение ячейки, которая находится за пределами указанного диапазона Al – D 10. Третий синтаксис свойства Cells возвращает все ячейки на указанном рабочем листе. В отличие от двух других, в этом синтаксисе, получаемые в результате данные — не одна ячейка, а целый диапазон. В приведенном ниже примере использован метод ClearContents по отношению к диапазону, полученному с помощью свойства Cells для активного рабочего листа. В результате будет удалено содержимое каждой ячейки на рабочем листе: ActiveSheet. Cells. ClearContents Свойство Offset Свойство Offset (подобно свойствам Range и Cells) также возвращает объект Range. В отличие от рассмотренных выше свойств, Offset применяется только к объекту Range и ни к какому другому. Данное свойство использует единственный синтаксис: объект. Of fset (сдвиг_строки, сдвиг_столбца)
Два аргумента свойства Off set соответствуют смешению относительно левой верхней ячейки указанного диапазона Range. Эти аргументы могут быть положительными (сдвиг вниз или вправо), отрицательными (вверх или влево) или нулевыми. В приведенном ниже примере значение 12 вводится в ячейку, которая находится под активной ячейкой: ActiveCell. Offset (1,0). Value = 12 В следующем примере значение 15 вводится в ячейку над активной ячейкой: ActiveCell. Offset (-1,0). Value = 15 Если активная ячейка находится в строке 1, то свойство offset в предыдущем примере выдает ошибку, так как оно не возвращает несуществующий объект Range. В процессе записи макроса в относительном режиме указания ссылки Excel использует свойство offset для обращения к ячейкам относительно начальной позиции (т.е. активной в момент начала записи макроса ячейки). Например, для генерации следующего кода использована функция записи макросов. Вначале запишем макрос (при активной ячейке В1), потом введем значение в ячейки В1: ВЗ, а затем вновь вернемся к ячейке В1: Sub Macrol() ActiveCell.FormulaRlCl = "1" ActiveCell.Offset(1, 0). Range ("Al").Select ActiveCell.FormulaRlCl = "2" ActiveCell.Offset(1, 0).Range("Al").Select ActiveCell.FormulaRlCl = "3" ActiveCell.Offset(-2, 0).Range("Al”).Select End Sub При записи макросов используется свойство FormulaRlCl. Как правило, для ввода значения в ячейку применяется свойство Value. Однако при использовании FormulaRlCl или Formula результат будет таким же. Также обратите внимание, что полученный код ссылается на ячейку Al, что довольно странно, так как эта ячейка даже не была задействована в макросе. Данная особенность процедуры записи макросов делает программу даже более сложной, чем необходимо. Вы можете удалить все ссылки на Range (" Al "), и макрос все равно будет работать нормально: Sub Modified Macrol() ActiveCell.FormulaRlCl = "1" ActiveCell.Offsetd, 0).Select ActiveCell.FormulaRlCl = "2" ActiveCell.Offset(1, 0).Select ActiveCell.FormulaRlCl = "3" ActiveCell. Offset (-2, 0). Select End Sub
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|