Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа_с_ячейками_объект_R...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
278.53 Кб
Скачать

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. Вывод выделенных несмежных областей в отдельные листы (htmltxt)

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. Форматирование границ (htmltxt)

Рис. 15.3.  Отформатированная таблица в документе