О стоимости курса |
Работа с ячейками - объект Range
15.3. Свойства Range
15.3.1. Address - адрес ячейки в формате A1
15-05-Range Address.xlsm - пример к п. 15.3.1.
Возвращает строку, представляющую собой адрес ячейки в формате A1. Адрес выводится в абсолютном виде - снабжается знаками $.
Листинг 15.15 позволяет, задав адрес ячейки в виде R1C1, вывести ее адрес в формате A1.
Dim num_Row Dim num_Col Dim MyRange As Range num_Row = Val(InputBox("Введите строку")) num_Col = Val(InputBox("Введите столбец")) Set MyRange = _ ActiveSheet.Cells(num_Row, num_Col) MsgBox (MyRange.Address + _ " - имя ячейки " & _ " с индексами " & num_Row & " и " & num_Col)Листинг 15.15. Вывод адреса ячейки в формате A1
15.3.2. Areas - работа с несмежными выделенными областями
15-06-Range Areas.xlsm - пример к п. 15.3.2.
Свойство возвращает коллекцию Areas, которая содержит все объекты типа Range в выделенной области в том случае, если выделенная область содержит несмежные диапазоны ячеек. Эту коллекцию удобно использовать для обработки несмежных областей, выделенных пользователем. Например, листинг 15.16. выводит каждую из выделенных областей большой таблицы в отдельный лист.
'Для хранения исходной 'выделенной области Dim obj_Area As Range 'Для хранения ссылки на 'отдельные диапазоны Dim obj_Range As Range 'Для исходного листа Dim obj_Sheet As Worksheet 'Для каждого из новых листов Dim obj_OldSheet As Worksheet 'Присвоим ссылку на выделенную область Set obj_Area = Selection 'Ссылка на активный лист Set obj_OldSheet = ActiveSheet 'Для каждой несмежной области в 'выделении For Each obj_Range In obj_Area.Areas 'Копируем эту область obj_OldSheet.Activate obj_Range.Select Selection.Copy 'Создаем новый лист 'и вставляем в него Set obj_Sheet = Worksheets.Add obj_Sheet.Select obj_Sheet.Paste NextЛистинг 15.16. Вывод выделенных несмежных областей в отдельные листы
15.3.3. Borders - управление границами ячеек
15-07-Range Borders.xlsm - пример к п. 15.3.3.
Позволяет управлять границами ячеек. Границы ячеек обычно используются для оформления таблиц. Как правило, работа ведется с неким выделенным диапазоном ячеек, для которого настраивают внешние границы, внутренние границы, типы и цвета линий. Работа с границами ячеек ведется посредством свойств объектов Border. Собственно говоря, самое важное свойство коллекции Borders - это Item, дающее доступ к отдельным объектам Border - то есть к границам. Остальные действия с границами проводятся с помощью свойств объектов Border.
Item - свойство, которое возвращает отдельную границу по индексу или имени границы. Принято использовать следующие имена границ:
- xlDiagonalDown - диагональ из левого верхнего угла ячейки в правый нижний
- xlDiagonalUp - диагональ из левого нижнего угла ячейки в правый верхний
- xlEdgeBottom - нижняя внешняя граница
- xlEdgeLeft - левая внешняя граница
- xlEdgeRight - правая внешняя граница
- xlEdgeTop - верхняя внешняя граница
- xlInsideHorizontal - внутренние горизонтальные границы
- xlInsideVertical - внутренние вертикальные границы
Когда выбрана граница, с которой вы хотите работать, можно использовать свойства объекта Border, в частности, следующие:
Color - позволяет задавать цвет границы. Для задания цвета можно использовать функцию RGB, которая по переданным ей значениям цветовых компонентов в формате RGB возвращает нужный цвет. Например, такой вызов этой функции возвратит красный цвет: RGB(255,0,0). Также здесь можно использовать цветовые константы: vbBlack, vbRed и т.д.
LineStyle - позволяет задавать тип линии. Здесь применимо несколько констант. В частности, следующие:
- xlContinuous - непрерывная линия
- xlDash - линия, состоящая из черточек
- xlDashDot - линия с чередующимися точками и черточками
- xlDot - линия состоящая из точек
- xlDouble - двойная линия
- xlLineStyleNone - нет линий
Weight - задает толщину линии при помощи указания одной из констант:
- xlHairline - самая тонкая линия
- xlThin - тонкая линия
- xlMedium - линия средней толщины
- xlThick - толстая линия
Давайте рассмотрим пример (листинг 15.17.). Выведем набор значений в таблицу, отформатируем ее таким образом, чтобы внешние границы состояли из сплошных черных линий средней толщины, внутренние - из точечных тонких красных линий (рис. 15.3.)
Dim obj_Range As Range 'Добавляем в книгу новый лист 'он автоматически становится активным Worksheets.Add ActiveSheet.Name = "Новая таблица" 'заполняем небольшую таблицу данными For i = 1 To 5 For j = 1 To 5 ActiveSheet.Cells(i + 1, j + 1) = _ Int(Rnd * 100) Next j Next i 'Свойство CurrentRegion возвращает 'заполненную данными область вокруг 'ячейки, для которой вызывается Set obj_Range = ActiveSheet.Cells(i, j).CurrentRegion 'Настраиваем свойства каждой из границ With obj_Range.Borders(xlEdgeLeft) .LineStyle = xlDContinuous .Color = vbBlack .Weight = xlMedium End With With obj_Range.Borders(xlEdgeTop) .LineStyle = xlContinuous .Color = vbBlack .Weight = xlMedium End With With obj_Range.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Color = vbBlack .Weight = xlMedium End With With obj_Range.Borders(xlEdgeRight) .LineStyle = xlContinuous .Color = vbBlack .Weight = xlMedium End With With obj_Range.Borders(xlInsideVertical) .LineStyle = xlDot .Color = RGB(255, 0, 0) .Weight = xlThin End With With obj_Range.Borders(xlInsideHorizontal) .LineStyle = xlDot .Color = RGB(255, 0, 0) .Weight = xlThin End WithЛистинг 15.17. Форматирование границ