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

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

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

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

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