
- •15.1. Как обратиться к ячейке
- •15.2. Методы Range
- •15.2.1. Activate - активация ячейки
- •15.2.2. AddComment - добавляем комментарии к ячейкам
- •15.2.3. AutoFit - автонастройка ширины столбцов и высоты строк
- •15.2.4. Clear, ClearComments, ClearContents, ClearFormats - очистка и удаление
- •15.2.5. Copy, Cut, PasteSpecial - буфер обмена
- •15.2.6. Delete - удалить диапазон
- •15.2.7. Merge, UnMerge - объединение ячеек
- •15.2.8. Select - выделение ячейки
- •15.3. Свойства Range
- •15.3.1. Address - адрес ячейки в формате a1
- •15.3.2. Areas - работа с несмежными выделенными областями
- •15.3.3. Borders - управление границами ячеек
- •15.3.4. Cells, Columns, Rows - ячейки, столбцы, строки
- •15.3.5. CurrentRegion - область, заполненная данными
- •15.3.6. Characters, Font - форматирование текста
- •15.3.7. Formula, FormulaR1c1 - формулы в ячейках
- •15.3.8. Interior - внешний вид ячейки
- •15.3.9. Name - работа с именованными диапазонами
- •15.3.10. Value - содержимое ячейки
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. Вывод выделенных несмежных областей в отдельные листы (html, txt)
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. Форматирование границ (html, txt)
Рис. 15.3. Отформатированная таблица в документе