Перейти к содержимому

VBA Excel. Программное создание границ ячеек

Программное создание границ ячеек произвольного диапазона при помощи VBA Excel. Свойство Borders объекта Range. Создание границ одной ячейки.

Программное создание границ ячеек

Если записать макрос добавления границ к ячейкам какого-нибудь диапазона, то в тексте макроса будет сгенерировано очень много строк с указанием различных параметров. Создать сетку из границ ячеек с параметрами «по умолчанию» можно гораздо проще.

'Для этого необходима всего одна строка:
Range("A1:G7").Borders.LineStyle = True

'Кроме того, для создания границ можно использовать единственную строку с указанием
'какого-нибудь параметра, например, для создания сетки из синих границ:
Range("A1:G7").Borders.Color = vbBlue

'или для создания сетки из границ в виде двойных линий:
Range("A1:G7").Borders.LineStyle = xlDouble

'Чтобы применить при создании границ два параметра, придется использовать уже две
'строки кода, например, для создания сетки из границ в виде жирных красных линий:
Range("A1:G7").Borders.Weight = xlThick
Range("A1:G7").Borders.Color = vbRed

'Удалить границы можно с помощью строки:
Range("A1:G7").Borders.LineStyle = False

Создание границ одной ячейки

Создать границы только для одной ячейки в VBA Excel можно следующим образом:

Range("A5").Borders.LineStyle = True
Cells(2, 8).Borders.Color = vbBlue
ActiveCell.Borders.LineStyle = xlDouble

'Удаление границ:
ActiveCell.Borders.LineStyle = False

Пример кода записанного макроса

Запись макроса: включаем запись, выбираем диапазон «A1:E9», на панели инструментов выбираем значок «Все границы», останавливаем запись. И это все наши выполненные действия, а в результате получаем следующий код:

Sub Макрос1()
    Range("A1:E9").Select
'Отображается левая граница диапазона
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
'Отображается верхняя граница диапазона
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
'Отображается нижняя граница диапазона
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
'Отображается правая граница диапазона
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
'Отображаются внутренние вертикальные линии
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
'Отображаются внутренние горизонтальные линии
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
End Sub

Конечно, можно использовать в своих программах код, сгенерированный при записи макроса, который будет прекрасно работать. Вот только, нужны ли в самописном коде такие нагромождения ненужных строк?

Макросы можно и нужно использовать, когда вы не знаете название нужного свойства или его значения, а после записи макроса открываете модуль и все перед глазами. Это касается не только создания границ ячеек, но и всех остальных случаев, когда предполагаемые вами действия можно записать с помощью макроса.

Добавить комментарий