Опубликован: 25.03.2009 | Уровень: для всех | Доступ: платный | ВУЗ: Институт управления, бизнеса и права
Лекция 15:

Работа с ячейками - объект Range

< Лекция 14 || Лекция 15: 123 || Лекция 16 >

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. Форматирование границ
Отформатированная таблица в документе

Рис. 15.3. Отформатированная таблица в документе
< Лекция 14 || Лекция 15: 123 || Лекция 16 >
Евгений Ушаков
Евгений Ушаков

Добрый день! Поясните, пожалуйста, 3000 р. стоит документ об окончании курса. Если он не нужен, то можно учиться бесплатно?

Александр Новиков
Александр Новиков

Добрый день! Очень нужен справочник по объектам VBA c описание их методов и свойств.

Кто-нибудь знает, где можно приобрести?

(Он конечно есть в VBA - Object browser, но не очень удобный)

Евгений Кленов
Евгений Кленов
Россия
Пизда Хуй
Пизда Хуй
Россия, Зимбабве