|
Добрый день! Поясните, пожалуйста, 3000 р. стоит документ об окончании курса. Если он не нужен, то можно учиться бесплатно? |
Работа с ячейками - объект 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.
Форматирование границ
