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

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

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

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

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

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

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

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

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

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

    Создание и удаление диагональных линий

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

    Расположение границ ячеек и диапазонов

    Расположение границ по краям и внутри ячеек и диапазонов описывают константы из коллекции XlBordersIndex.

    Список констант XlBordersIndex:

    Константа Значение Описание
    xlDiagonalDown 5 Диагональная линия от верхнего левого угла к нижнему правому углу в каждой ячейке диапазона.
    xlDiagonalUp 6 Диагональная линия от нижнего левого угла к правому верхнему углу в каждой ячейке диапазона.
    xlEdgeBottom 9 Граница по нижнему краю диапазона.
    xlEdgeLeft 7 Граница по левому краю диапазона.
    xlEdgeRight 10 Граница по правому краю диапазона.
    xlEdgeTop 8 Граница по верхнему краю диапазона.
    xlInsideHorizontal 12 Горизонтальные границы для всех ячеек в диапазоне, за исключением внешних границ диапазона.
    xlInsideVertical 11 Вертикальные границы для всех ячеек в диапазоне, за исключением внешних границ диапазона.

    Толщина границ ячеек и диапазонов

    Толщину границ по краям и внутри ячеек и диапазонов описывают константы из коллекции XlBorderWeight.

    Список констант XlBorderWeight:

    Константа Значение Описание
    xlHairline 1 Очень тонкая граница
    xlThin 2 Тонкая граница (по умолчанию)
    xlMedium -4138 | 3* Граница средней толщины
    xlThick 4 Толстая граница

    * У меня, в Excel 2016, константе xlMedium соответствует не только числовое значение -4138, но и 3.

    Стили границ (типы линий)

    Стили границ по краям и внутри ячеек и диапазонов описывают константы из коллекции XlLineStyle.

    Список констант XlLineStyle:

    Константа Значение Описание
    xlContinuous 1 Непрерывная линия
    xlDash -4115 Штриховая линия
    xlDashDot 4 Чередование точек и тире
    xlDashDotDot 5 Чередование двух точек и тире
    xlDot -4118 Пунктирная линия
    xlDouble -4119 Двойная линия
    xlLineStyleNone -4142 Нет границы (удаление границы)
    xlSlantDashDot 13 Линия, разрезанная двойными слешами

    Применяем разные типы линий к разным сторонам выделенного диапазона:

    Какие могут быть границы в сочетаниях типа линии и ее толщины, вы можете видеть в диалоговом окне «Формат ячеек» на вкладке «Граница».


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    8 комментариев для “VBA Excel. Программное создание границ ячеек”

    1. Удалить границы можно с помощью строки:

      обратите внимание, что диагональные линии этим способом не удаляются

      1. Евгений

        Вы правы, для удаления диагональных линий, их необходимо указывать явно:

    2. Здравствуйте!
      А как правильно создавать границы для именованных диапазонов?
      Я пока только понял, как их выделять
      [диапазон].Select
      или
      Range("диапазон").Select
      и работать уже с выделением, что, на мой взгляд, неправильно.
      Спасибо!

    3. Здравствуйте!
      Можно ли программно выбирать константу. Например вставить i в Range.Borders(i) и таким образом пробежаться или выбрать границу (верхнюю, левую и т. д.).

      1. Евгений

        Добрый вечер, Андрей!
        Можно создать массив с константами или использовать их числовые индексы:

        1. Спасибо!
          Создал вот такую процедурку. Может кому пригодится.

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

    Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора.