Remkomplekty.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Excel vba selection

Объекты Range и Selection

В иерархии Excel объект Range (диапазон) идет сразу после объекта worksheet. Объект Range является одним из ключевых объектов VBA. Объект Selection (выбор) возникает в VBA двояко — либо как результат работы метода Select, либо при вызове свойства selection. Тип получаемого объекта зависит от типа выделенного объекта. Чаще всего объект Selection принадлежит классу Range и при работе с ним можно использовать свойства и методы объекта Range. Интересной особенностью объектов Range и selection является то, что они не являются элементами никакого семейства объектов.

Адресация ячеек

При работе с объектом Range необходимо помнить, как в Excel ссылаются на ячейку рабочего листа. Имеются два способа ссылки на ячейки рабочего листа: относительная адресация (т. е. когда начало координат, задающее нумерацию строк и столбцов, связывается с объектом, вызвавшим Range) и абсолютная адресация.

Имя ячейки состоит из имени столбца (их 256 — А, В, . Z, АВ, . HZ, IA, . IV) и номера (1, . 16384).

Адресация задается индексом строки и индексом столбца. Например, R1C1, R2C3

Признаком абсолютной адресации является знак «$», предшествующий имени строки (абсолютной адресации на строку) или столбца (абсолютной адресации на столбец). Например, $А10, А$10 и $А$10 задают абсолютную адресацию на столбец А, строку 10 и ячейку А10 соответственно

Указывается смещение по отношению к активной ячейке. Смещение приводится в квадратных скобках, причем знак указывает на направление смещения. Например, если активной ячейкой является касз, то R[i]C[-1] дает ссылку на ячейку кзс2

Адресация ячейки рабочего листа является лишь частью полного адреса ячейки, который в общем случае включает имя рабочего листа и адрес книги. При задании полного адреса за именем листа следует знак «!», а адрес книги заключается в скобки. Например,

В первой строке данного примера дана относительная ссылка на ячейку AI активного рабочего листа, во второй — на ячейку AI рабочего листа листа активной книги, а в третьей на ячейку AI рабочего листа лист2 книги моякнига-xls текущего рабочего каталога.

Задание групп строк и столбцов с помощью объекта Range

Если в диапазоне указываются только имена столбцов или строк, то объект Range задает диапазон, состоящий из указанных столбцов или строк. Например, Range («А: с») задает диапазон, состоящий из столбцов А, в и с, а Range <"2: 2") - из второй строки. Другим способом работы со строками и столбцами являются методы ROWS (строки) и Columns (столбцы), возвращающие коллекции строк и столбцов. Например, столбцом А является columns (1), а второй строкой - ROWS (2).

Связь объекта Range и свойства Cells

Так как ячейка является частным случаем диапазона, состоящим только из единственной ячейки, объект Range также позволяет работать с ней. Объект cells (ячейки) — это альтернативный способ работы с ячейкой. Например, ячейка А2 как объект описывается Range («A2») или cells (1,2). В свою очередь объект ceils, вкладываясь в Range, также позволяет записывать диапа зон в альтернативном виде, который иногда удобен для работы, а именно,

Range («А2:C3») И Range(Cells(1,2), Cells(3,3))

Определяют один и тот же диапазон.

Свойства и методы объекта Range

Объект Range позволяет сочетать гибкость VBA и мощь рабочего листа Excel. Более 400 встроенных функций рабочего листа существенно упрощают и делают более наглядным программирование на VBA.

Далее приводятся наиболее часто используемые свойства и методы объекта

Перечислим основные свойства объекта Range.

Объекты Range, Selection

Range и Selection — основные объекты, которые предоставляют разработчику доступ к объектам нижнего уровня вплоть до конкретной ячейки. Объект Range (диапазон) используется для работы с ячейками, строками, столбцами, а также их группами. Все объекты MS Excel (Application, Worksheet и сам объект Range) имеют свойство Range. Синтаксис этого свойства следующий:

Property Range (Cell_B [,Cell_E]) As Range.

Если указываются оба аргумента CellB и Cell E, то они определяют прямоугольную область, заданную наименьшим левым верхним углом (параметр Cell В) и максимальным правым углом (параметр Cell_ Е) диапазонов. В этом случае аргументами могут быть переменные класса Range. Объект Range может представлять одну ячейку, одну строку, один столбец рабочего листа или их множество.

Рассмотрим первый (простой) случай, когда используется один аргумент. Тогда в качестве аргумента указывается любая допустимая в Excel ссылка только в формате А1 (см. параграф 8.1). Если имя листа не указывается, то используется активный лист, например:

‘Ячейке А5 листа Лист1 присваивается значение 5

Worksheets( «Лист1»).Range(«А5»).Value = 5

‘Ячейке А5 текущего листа присваивается значение 4

‘Диапазону ячеек D3.D6 текущего листа присваивается формула А1+4

Во втором случае (два аргумента) в качестве аргументов можно использовать переменные, выражения, свойства или методы объекта Range. Примеры:

Range («ВЗ», «Е20») ‘интервал ВЗ.Е20.

Range (Rows (1), Rows (6) ) ‘интервал, содержащий первые шесть строк

Полезным является объект Selection (выделение), который позволяет работать не только с выделенными (активными) ячейками, но и другими объектами. Напомним, что объект Selection создается при вызове метода Select либо свойства Selection. Тип созданного объекта определяется типом выделенного объекта (диапазон ячеек, рисунок, диаграмма и т.д.). Нас будет интересовать объект Selection, принадлежащий классу Range. В этом случае при работе с ним можно использовать все свойства и методы класса Range.

Для удобства изложения разделим свойства объекта Range па две группы. К первой группе отнесем свойства, отвечающие за реализацию доступа к содержимому объекта, а ко второй — свойства, реализующие его оформление.

Свойства первой группы (доступ к объекту). Важные свойства первой группы объекта Range приведены в табл. 8.14.

Свойства объекта Range первой группы (доступ к объекту)

Описание и допустимые значения

Возвращает строку со ссылкой на объект Range в формате А1 или R1C1

Определяет семейство ячеек диапазона. Подробно опишем позже

Определяет семейство столбцов в диапазоне (объект Range). Синтаксис: Columns (ind), где ind — индекс колонки в объекте. Если индекс не задан, то выбираются все колонки объекта. Пример: Range («В2: С4″) . Columns (1) — возвращает указанную колонку В в заданном интервале, т.е. ячейки В2:В4

Возвращают значение (целое число) индекса соответственно первого столбца или первой строки для заданного объекта. Пример: Range («В4») .Column — возвращает число 2

Определяет количество элементов в диапазоне. Используется со всеми объектами типа коллекции.

Пример: Range («al :сЗ») .Rows.Count — возвращает значение, равное 3

Возвращает объект Range с интервалом ячеек, содержащим заданную ячейку.

Возвращают один или несколько охватывающих объект Range столбцов, соответственно, строк

Определяет строку с формулой в формате А1.

Определяет строку с формулой в формате R1C1 (рекомендуется использовать).

Пример: Range(«В2»).FormulaRICl = «=R1C1+1»

Описание и допустимые значения

Определяет имя диапазона.

Пример: Range («В1 :В4″) .Name=» Итого»

Возвращает объект Range, смещенный относительно выбранной ячейки. Подробно опишем позже

Возвращает объект Range

Определяет семейство строк в диапазоне (объект Range)). Синтаксис: Rows (ind), где ind — индекс строки в объекте. Если индекс не задан, то выбираются все строки объекта.

Читать еще:  Средство просмотра excel

Пример: Worksheets (1) .Range («В2:С4») .Rows (2) — возвращает вторую строку заданного интервала, т.е. ячейки ВЗ:СЗ

Содержит значение из ячейки или диапазона. Пример: X=Range(«А2»).Value

Свойство Offset. К первой группе свойств, обеспечивающих доступ к объекту, относится и свойство Offset. Оно позволяет задавать диапазон (ячейку), смещенный относительно выбранной ячейки.

Offset ([RowOf] , [ColumnOf] ),

где RowOf — целое число, указывающее смещение ячейки по строкам; ColumnOf — целое число, указывающее смещение ячейки по столбцам. Если какой-то аргумент не задан, то соответствующее смещение равно нулю.

Range («В6«) . Offset (-2,1) ‘возвращает ячейку С4.

возвращает ячейку G8 и задает ее значение, равное 3.

возвращает ячейку A2, в которой записано число 4.

Свойство Cells является семейством (двумерным массивом) ячеек и используется для доступа к отдельной или группе ячеек. Cells является объектом типа Range и обладает тем же набором свойств и методов, что и объект Range. Для доступа к конкретной ячейке объекта Cells нужно в синтаксисе обращения к элементу Cells(r,c) в качестве аргументов указать целыми числами номер строки (г) и столбца (с). Например:

Worksheets (1) .Cells (5,1) .Value = 5присвоение значения 5 ячейке

‘с адресом А5 первого рабочего листа.

ActiveSheet .Cells . Font .Name = «Courier New» ‘установка шрифта

для всех ячеек активного листа.

Range <"B2:D5").Cells (1,1) .Interior.Color =vbBlue

‘установка цвета заливки для ячейки В2.

Можно также использовать свойство Cells для альтернативного указания диапазона. Например, Range («Л2;СЗ») и Range (Cells (2,1) , Cells (3,3) ) определяют один и тот же диапазон.

Свойства второй группы (оформление содержимого объекта). Свойство — участник Font (шрифт) возвращает объект Font, устанавливающий характеристики шрифта в области объекта Range. Объект Font в своем составе имеет такие основные свойства, как Name (гарнитура шрифта), Color (цвет), Size (размер), Bold (полужирность) и Italic (курсив).

With Worksheets(«Лист1») .Range(«В5»).Font .Name = «Times New Roman»

. Color=vbred .Size = 14 .Bold = True .Italic = True

Свойства ColumnWidth, RowHeight возвращают ширину столбцов и соответственно высоту строк диапазона. Свойство WrapText определяет возможность переноса текста в диапазоне (True — разрешает, False — запрещает).

Свойство NumberFormat задает формат отображения данных в объекте с использованием шаблона. Синтаксис:

Примеры допустимых шаблонов приведены в табл. 8.15.

Шаблоны отображения данных

Вывод чисел с точностью до третьего знака после запятой. Специальные символы шаблона: «#» — необязательная цифра; «0» — обязательная цифра; «,» — разделитель тысяч; «.» — десятичный разделитель

Вывод даты в формате 11.01.99 («d» — день; «т» — месяц; «уу» — две последние цифры года)

Вывод даты в формате 01.01.1999

Вывод даты в формате 1 янв. 99 (шшш — сокращение месяца)

Вывод даты в формате 1 января 99 (mmmm — полное название месяца)

Время в формате 1:23 (h — часы, mm — минуты)

Время в формате 1:23:00 (ss — секунды)

Экспоненциальный формат числа

Range(«А1:Д1О»).Select Selection .NumberForтаt=»0.00

Свойство Orientation определяет ориентацию (расположение) текста в ячейке. Допустимые значения свойства: xlHorizontal (горизонтальное расположение), xlVertical (вертикальное расположение), -90 до 90 (направление текста в градусах).

Свойства выравнивания содержимого объекта: HorizontalAlignment (горизонтальное выравнивание) может принимать значения, указанные в табл. 8.16, VerticalAlignment (вертикальное выравнивание) может принимать значения, указанные в табл. 8.17.

Допустимые значения для HorizontalAlignment

По правому краю

По центру выделения

Допустимые значения для VerticalAlignment

По верхнему краю

По нижнему краю

Range(«Al:А15«).HorizontalAlignment = xlJustify Range(«Al;А15»).VerticalAlignment = xlCenter Range(«Al:A15«).WrapText = True Range(«Al:A15«).Orientation = xlHorizontal

Свойства заливки ячейки. Свойство-участник Interior определяет цвет и узор, с помощью которых заполняется фон ячейки. Является объектом типа Interior, содержащего свойства Pattern (узор заливки), Color и Colorlndex (цвет фона), PatternColorlndex и PatternColor (цвет узора заливки).

Pattern может принимать значения, указанные в табл. 8.18.

Допустимые значения для Pattern

Штриховой диагональный перевернутый

Толстый клетчатый диагональный

Тонкий штриховой горизонтальный

Тонкий штриховой вертикальный

Тонкий перевернутый диагональный

Тонкий горизонтальный клетчатый

Тонкий диагональный клетчатый

Range («Ы : еЗ «) . Select

With Selection.Interior .ColorIndex=8 .Pattern=xlSolid .PatternColorlndex = 7

Свойства задания цвета. В свойствах Color, PatternColor цвет может задаваться следующими способами:

  • • указать цвет из восьми стандартных констант цветов: vbWhite (белый), vbBlack (черный), vbRed (красный), vbGreen (зеленый), vbBlue (синий), vbYellow (желтый), vbMagenta (розовый), vbCyan (голубой);
  • • использовать функцию RGB(x,y,z), где аргументы х, у, z задают интенсивности соответственно красного, зеленого и синего цветов и могут изменяться от 0 до 255;
  • • использовать функцию цвета QBColor(x), где параметр х задает номер цвета от 0 до 15 (0 — черный, 1 — синий, 2 — зеленый, 3 — бирюзовый, 4 — коричневый, 5 — фиолетовый, 6 — травяной, 7 — серый, 8 — темно-серый, 9 — голубой, 10 — светло-зеленый, 11 — светло-голубой, 12 — красный, 13 — сиреневый, 14 — желтый, 15 — белый).

При этом функция QBColor переводит обозначение цвета из старого номерного обозначения Basic с возможными 16 значениями в RGB-код, который понимается VBA. Обычно используется при изменении унаследованных программ.

В свойствах Colorlndex, PatternColorlndex цвет задается в виде его индекса (целое число от 0 до 56 или мнемоническая константа). В табл. 8.19 приведена цветовая палитра с индексами (номерами цветов).

Возможные константы, названия и палитра цветов

VBA Selection

In VBA we can select any range of cells or a group of cells and perform different set of operations on them, selection is a range object so we use range method to select the cells as it identifies the cells and the code to select the cells is “Select” command, the syntax to use for selection is range(A1:B2).select.

What is Excel VBA Selection Property?

Selection is the property available with VBA. Once the range of cells selected we need to decide upon what we need to do. So, using this VBA Selection property we can do all the things we can do with selected cells. One of the problems with Selection property is we don’t get to see the IntelliSense list. So when we are writing the code we need to absolutely sure of what we are doing without the IntelliSense list.

Examples of Selection Property in VBA

Here we look at the examples of selection in Excel VBA.

Example #1

Let me show you a simple example of “selection” property with VBA. Now I want to first select the cells from A1 to B5, for that we can write the VBA code like this.

Range (“A1:B5”).Select

Code:

If I want to insert the value of “hello” to these cells I can write the code like this.

Code:

Similarly, once the cells are selected it becomes Selection”.

Code:

In the above first, I have selected the range of cells from A1 to B5. So, this line will select the cells.

Once these cells are selected we can refer to these cells by using the property “Selection” in excel VBA. So using Selection property we can insert the value of “Hello” to these cells.

Читать еще:  Excel to sql

This is the general overview of the “Selection” property in VBA.

Example #2

Now we will see the VBA “Selection” property with variables. Define the VBA variable as Range.

Code:

The range is an object variable since it is an object variable we need to set the range of cells using the “Set” keyword.

I will set the range as “Range(“A1:A6”).

Code:

Now the variable “Rng” refers to the range of cells A1 to A6.

Now I will write the code to insert the value of “Hello”.

Code:

This will insert the value of “Hello” to the cells A1 to A6.

It doesn’t matter from where you are running the code, in the active worksheet it will insert the value “Hello” to the cell A1 to A6.

But imagine the situation where you have to insert the word “Hello” wherever you select the cells with just a click of the button.

For this we cannot set the specific range of cells, rather we need to Set the range as “Selection”.

Code:

Now the variable “Rng” refers to the active cell or wherever we select the cells. Now using this property (Selection) in excel VBA we can insert value “Hello”.

Code:

This will insert the word “Hello” to the cells of our selection. Now I will select the cells from B2 to C6 and run the code, it will insert the “Hello” value.

Example #3

Now we will see how we can change the interior color of the selected cells. Now I want to change the interior color of the cells I will select. For this first, I have declared the variable as Range and set the range reference as “Selection”.

Code:

Now Using VBA Selection property access Interior property.

Code:

Once the “Interior” property selected we need to decide what we need to do with this property. Since we need to change the color of the selected cell’s interior select the property “Color”.

Code:

Set the color property as “vbGreen”.

Code:

So this will change the interior color of the selected cells to “vbGreen”.

Like this, we can use Excel VBA “Selection” property in coding and do lot more things easily.

Note: One of the biggest threats with “Selection” property is we don’t get the IntelliSense list access while coding. As a new learner it is almost impossible to remember all the properties and methods of Selection property, so you need to be absolutely pro in VBA to start using “Selection” property.

Recommended Articles

This has been a Guide to VBA Selection. Here we discussed what is Selection Property in Excel VBA along with some practical examples and a download template. Below are some useful excel articles related to VBA –

Вопрос 14. VBA Excel. Объекты, свойства и методы.

Одним из основных понятий VBA является объект. Объект – это то, чем вы управляете с помощью программы на языке VBA, например, форма, кнопка, рабочий лист или диапазон ячеек MS Excel. Каждый объект обладает некоторыми свойствами. Например, форма может быть видимой или невидимой в данный момент на экране. Другой пример свойства объекта – шрифт для отображения информации в ячейке (объекте) рабочего листа.

Объект содержит также список методов, которые к нему применимы. Методы – это то, что вы можете делать с объектом. Например, показать форму на экране или убрать её можно с помощью методов Show и Hide.

Таким образом, объект – это программный элемент, который имеет свое отображение на экране, содержит некоторые переменные, определяющие его свойства, и некоторые методы для управления объектом. Например, в MS Excel имеется много встроенных объектов:

Установка значений свойств – это один из способов управления объектами. Синтаксис установки значения свойства объекта следующий:

Объект. Свойство = Выражение

Основным свойством объектов Cells и Range, является Value(значение), которое, однако, можно не указывать. Например:

Range(“A5:A10”). Value = 0или Range(“A5:A10”) = 0– в диапазон ячеек A5:A10 заносится значение 0.

Cells(2, 4). Value = n или Cells(2, 4) = n – в ячейку, находящуюся на пересечении 2-й строки и 4-го столбца (ячейка с адресом “D2”), заносится значение переменной n.

Синтаксис чтения свойств объекта следующий:

Переменная = Объект. Свойство

Xn = Cells(1, 2).Value или Xn = Range(“B1”).Value– переменной Xn присваивается значение из ячейки B1 текущего рабочего листа.

Синтаксис применения методов к объекту:

Объект. Метод

Sheets(2).Activate –сделать активным лист с №2.

Sheets(“Диаграмма”).Delete –удалить лист с именем “Диаграмма”.

Range(«A5:A10»).Clear –очистить диапазон ячеек A5:A10.

Range(«A2:B10»).Select – выделить диапазон ячеек A2:B10.

В MS Excel имеются объекты, которые содержат другие объекты. Например, рабочая книга содержит рабочие листы, рабочий лист содержит диапазон ячеек и т.д. Объектом самого высокого уровня является Application(приложение). Если вы изменяете его свойства или вызываете его методы, то результат применяется к текущей работе MS Excel. Например:

Application.Quit — завершение работы с Excel.

Отметим, что точка после имени объекта может использоваться для перехода от одного объекта к другому. Например, следующее выражение очищает вторую строку рабочего листа Май в рабочей книге Отчет:

Application.Workbooks(«Отчет»).Worksheets(«Май»).Rows(2).Delete

Нужно отметить следующее:

· Можно не писать имя объекта Application,так как это подразумевается по умолчанию.

· При работе с подобъектом уже активизированного объекта нет необходимости указывать содержащий его объект.

· VBA использует некоторые свойства и методы, которые возвращают объект к которому они относятся (это позволяет быстро указывать нужный объект). Примеры таких свойств: ActiveCell (активная ячейка), ActiveSheet (активный лист), ActiveWorkBook (активная рабочая книга). Так, установить значение активной ячейки можно следующим образом:

ActiveCell.Value = » Да».

Вопрос 15. VBA Excel. Ссылки на одиночные объекты и объекты семейств

Семейством (Collection) в VBA называется совокупность однотипных объектов. Например, в Excel семейство Worksheets является совокупностью всех рабочих листов — объектов Worksheet — в данной рабочей книге, а семейство Lines — совокупностью прямых линий, нарисованных на данном рабочем листе.

Составляющие семейство отдельные объекты называются элементами семейства. Можно ссылаться на отдельные элементы семейства, указывая в скобках имя конкретного объекта или его индекс — порядковый номер элемента в семействе. Например, оператор

закрывает рабочую книгу под именем ПОДПИСКА.xls.

А вот пример использования индекса элемента семейства. Оператор

выделяет первую из имеющихся линий на активном рабочем листе.

Хотя семейства представляют собой группы объектов, сами семейства также являются одиночными объектами. Такой собирательный объект-семейство представляет собой всю совокупность входящих в семейство объектов, и имеет собственные свойства и методы, с помощью которых можно изменять разом состояние всех объектов семейства. Например, оператор ActiveSheet.Lines.Deletеудаляет все нарисованные на активном рабочем листе прямые линии.

Читать еще:  Справочник по vba excel на русском

Как правило, индивидуальные объекты, являющиеся элементами семейств, имеют гораздо больше свойств и методов, чем соответствующий собирательный объект-семейство. Например, объект-семейство Workbooks в Excel имеет всего пять свойств (Application, Count, Creator, Item, Parent) и четыре метода (Add, Close, Open, OpenText), то время как объект Workbook имеет 59 свойств и 42 метода.

Не все объекты приложений могут группироваться в семейства — для некоторых индивидуальных объектов не существует соответствующих семейств.

Вопрос 16. Объект Range. Назначение и особенности.

ОБЪЕКТ RANGE.

Range (объект «Диапазон»)позволяет изменять свойства диапазона ячеек, например, используемый шрифт, проверять или изменять содержимое ячеек, вырезать или копировать указанный диапазон, и многое другое. Это наиболее часто используемый в

Excel объект. Принадлежащий к этому же классу объектов объект ActiveCell — представляет собой активную в настоящий момент ячейку. Обратите внимание на то, что не существует такого объекта, как Cell — отдельно взятая ячейка представляет собой частный случай объекта Range.

Объект RANGE представляет отдельную ячейку, диапазон ячеек, целую строку, или колонку, несколько выделенных областей или трехмерный диапазон. Объект RANGE несколько необычен, поскольку может представлять как одну, так и множество ячеек. Для объекта RANGE не предусмотрен специальный объект-набор, и в зависимости от конкретной ситуации его можно считать либо отдельным объектом, либо набором.

· если вам нужно ввести данные в ячейку или отформатировать ее, то вы должны получить объект Range, представляющий эту ячейку;

· если вы хотите сделать что-то с выделенными вами ячейками, вам необходимо получить объект Range, представляющий выделение;

· если вам нужно просто что-то сделать с группой ячеек, первое ваше действие — опять-таки получить объект Range, представляющий эту группу ячеек.

Пожалуй, самый естественный способ получения ссылки на объект Range — это метод Range. Имеются два вида синтаксиса для применения этого метода. Первый использует один аргумент: объект.Range(интервал)

где: объект — это объект типа Worksheet или Range, к которому применяется метод Range. Этот объект может быть опущен, и тогда предполагается, что метод Range применяется к активному рабочему листу — объекту ActiveSheet;

Excel vba selection

Продолжаем наш разговор про объект Excel Range , начатый в первой части. Разберём ещё несколько типовых задач и одну развлекательную. Кстати, в процессе написания второй части я дополнил и расширил первую, поэтому рекомендую её посмотреть ещё раз.

Примеры кода

Скачать

Типовые задачи

Перебор ячеек диапазона (вариант 4)

Для коллекции добавил четвёртый вариант перебора ячеек. Как видите, можно выбирать, как перебирается диапазон — по столбцам или по строкам. Обратите внимание на использование свойства коллекции Cells . Не путайте: свойство Cells рабочего листа содержит все ячейки листа, а свойство Cells диапазона ( Range ) содержит ячейки только этого диапазона. В данном случае мы получаем все ячейки столбца или строки.

Должен вас предупредить, что код, который вы видите в этом цикле статей — это код, написанный для целей демонстрации работы с объектной моделью Excel. Тут нет объявлений переменных, обработки ошибок и проверки условий, так как я специально минимизирую программы, пытаясь акцентировать ваше внимание целиком на обсуждаемом предмете — объекте Range .

Работа с текущей областью

Excel умеет автоматически определять текущую область вокруг активной ячейки. Соответствующая команда на листе вызывается через Ctrl + A . Через ActiveCell мы посредством свойства Worksheet легко выходим на лист текущей ячейки, а уже через него можем эксплуатировать свойство UsedRange , которое и является ссылкой на Range текущей области. Чтобы понять, какой диапазон мы получили, мы меняем цвет ячеек. Функция GetRandomColor не является стандартной, она определена в модуле файла примера.

Определение границ текущей области

Демонстрируем определение левого верхнего и правого нижнего углов диапазона текущей области. С левым верхним углом всё просто, так как координаты этой ячейки всегда доступны через свойства Row и Column объекта Range (не путать с коллекциями Rows и Columns !). А вот для определения второго угла приходится использовать конструкцию вида .Rows(.Rows.Count).Row , где .Rows.Count — количество строк в диапазоне UsedRange , .Rows(.Rows.Count) — это мы получили последнюю строку, и уже для этого диапазона забираем из свойства Row координату строки. Со столбцом — по аналогии. Также обратите внимание на использование оператора With . Как видите, оператор With , помимо сокращения кода, также позволяет отказаться от объявления отдельной объектной переменной через оператор Set , что очень удобно.

Выделение столбцов / строк текущей области

Тут нет ничего нового, мы всё это обсудили в предыдущем примере. Мы получаем ссылки на столбцы / строки, меняя их цвет для контроля результата работы кода.

Сброс форматирования диапазона

Для возвращения диапазона к каноническому стерильному состоянию очень просто и удобно использовать свойство Style , и присвоить ему имя стиля «Normal». Интересно, что все остальные стандартные стили в локализованном офисе имеют русские имена, а у этого стиля оставили англоязычное имя, что неплохо.

Поиск последней строки столбца (вариант 1)

Range имеет 2 свойства EntireColumn и EntireRow , возвращающие столбцы / строки, на которых расположился ваш диапазон, но возвращают их ЦЕЛИКОМ. То есть, если вы настроили диапазон на D5 , то Range(«D5»).EntireColumn вернёт вам ссылку на D:D , а EntireRow — на 5:5 .

Идём далее — свойство End возвращает вам ближайшую ячейку в определенном направлении, стоящую на границе непрерывного диапазона с данными. Как это работает вы можете увидеть, нажимая на листе комбинации клавиш Ctrl + стрелки . Кстати, это одна из самых полезных горячих клавиш в Excel. Направление задаётся стандартными константами xlUp , xlDown , xlToRight , xlToLeft .

Классическая задача у Excel программиста — определить, где кончается таблица или, в данном случае, конкретный столбец. Идея состоит в том, чтобы встать на последнюю ячейку столбца (строка 1048576) и, стоя в этой ячейке, перейти по Ctrl + стрелка вверх (что на языке VBA — End(xlUp) ).

Поиск последней строки столбца (вариант 2)

Ещё один вариант.

Поиск «последней» ячейки листа

Тут показывается, как найти на листе ячейку, ниже и правее которой находятся только пустые ячейки. Соответственно данные надо искать в диапазоне от A1 до этой ячейки. На эту ячейку можно перейти через Ctrl + End . Как этим воспользоваться в VBA показано ниже:

Разбор клипо-генератора

Ну, и в качестве развлечения и разрядки взгляните на код клипо-генератора, который генерирует цветные квадраты в заданных границах экрана. На некоторых это оказывает умиротворяющий эффект 🙂

По нашей теме в коде обращает на себя внимание использование свойства ReSize объекта Range . Как не трудно догадаться, свойство расширяет (усекает) текущий диапазон до указанных границ, при этом левый верхний угол диапазона сохраняет свои координаты. А также посмотрите на 2 последние строчки кода, реализующие очистку экрана. Там весьма показательно использован каскад свойств End и Offset .

Ссылка на основную публикацию
Adblock
detector