Vba excel границы строк

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

‘Для этого необходима всего одна строка:

Range(«A1:G7»).Borders.LineStyle = True

‘Вместо ключевого слова True можно

‘использовать константу xlContinuous:

Range(«A1:G7»).Borders.LineStyle = xlContinuous

‘Кроме того, для создания границ ячеек можно

‘использовать единственную строку с указанием

‘какого-нибудь параметра, например,

‘для создания сетки из синих границ:

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

‘Вместо ключевого слова False можно

‘использовать константу xlNone:

Range(«A1:G7»).Borders.LineStyle = xlNone

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

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

Range(«A5»).Borders.LineStyle = True

Cells(2, 8).Borders.Color = vbBlue

ActiveCell.Borders.LineStyle = xlDouble

‘Удаление границ:

ActiveCell.Borders.LineStyle = False

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

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

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

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

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

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

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

Range(«A1:G7»).Borders(xlDiagonalDown).LineStyle = True

Range(«A1:G7»).Borders(xlDiagonalUp).LineStyle = True

‘Удаление диагональных линий:

Range(«A1:G7»).Borders(xlDiagonalDown).LineStyle = xlNone

Range(«A1:G7»).Borders(xlDiagonalUp).LineStyle = xlNone

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

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

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

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

‘Отображаем у выделенной ячейки нижнюю границу с толщиной и стилем по умолчанию (xlThin и xlContinuous)

ActiveCell.Borders(xlEdgeBottom).LineStyle = True

ActiveCell.Borders(xlEdgeBottom).LineStyle = 1

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

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

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

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

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

‘Отображаем у выделенной ячейки нижнюю границу в виде толстой линии

ActiveCell.Borders(xlEdgeBottom).Weight = xlThick

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

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

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

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

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

Sub Primer()

    With Selection

        .Borders(xlEdgeTop).LineStyle = xlDash

        .Borders(xlEdgeTop).Weight = xlMedium

        .Borders(xlEdgeRight).LineStyle = xlDouble

        .Borders(xlEdgeBottom).LineStyle = xlDot

        .Borders(xlEdgeLeft).LineStyle = xlDashDot

    End With

End Sub

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


Содержание

  1. VBA Границы — Как использовать границу в Excel VBA (шаблон Excel)
  2. Границы в Excel VBA
  3. Как использовать границы в VBA
  4. Пример № 1 — Границы VBA
  5. Пример №2 — Граница VBA
  6. Пример № 3 — Граница VBA
  7. Пример № 4 — Граница VBA
  8. То, что нужно запомнить
  9. Рекомендуемые статьи
  10. Метод Range.BorderAround (Excel)
  11. Синтаксис
  12. Параметры
  13. Возвращаемое значение
  14. Примечания
  15. Пример
  16. Поддержка и обратная связь
  17. Borders object (Excel)
  18. Remarks
  19. Examples
  20. Properties
  21. See also
  22. Support and feedback
  23. Макросы для изменения формата ячеек в таблице Excel
  24. VBA-макрос: заливка, шрифт, линии границ, ширина столбцов и высота строк
  25. Описание VBA-макроса для формата ячеек таблицы Excel
  26. Модификация исходного кода макроса для форматирования

VBA Границы — Как использовать границу в Excel VBA (шаблон Excel)

Границы в Excel VBA

Границы являются необходимой частью каждого листа или в любом файле слова. Границы отделяют данные друг от друга, они показывают, какая часть данных относится к какой области, чтобы избежать путаницы. Кроме того, выглядит хорошо иметь границы в нашей таблице данных. В листе Excel у нас есть опции для вставки границ вручную, но как мы это сделаем в VBA, мы узнаем из этой статьи.

Чтобы применить границы в VBA, нам нужен доступ к свойствам ячейки, и в текущем случае нам нужно получить доступ к границам. Теперь нам нужно помнить, что в свойствах границ доступны различные типы опций. Например, диагональ по вертикали вниз и т. Д. Мы рассмотрим некоторые из них здесь.

Как использовать границы в VBA

Чтобы использовать границы в VBA, нам нужно выполнить следующие шаги:

  1. Используйте метод диапазона для доступа к значению диапазона.
  2. Используйте метод border, если мы хотим отформатировать только часть ячейки или границы вокруг, если мы хотим покрыть ячейки границами.
  3. Используйте разные стили линий, чтобы границы выглядели приятнее.

Вы можете скачать этот шаблон VBA Border Excel здесь — Шаблон VBA Border Excel

Теперь давайте рассмотрим несколько примеров и посмотрим, как мы можем вставить границу в ячейку Excel.

Пример № 1 — Границы VBA

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

Шаг 1: Перейдите на вкладку разработчика, откройте Visual Basic, и мы увидим VB Editor.

Шаг 2: Вставьте новый модуль из вкладки вставки. Нажмите на модуль, который мы только что вставили, который откроет окно кода для нас,

Шаг 3: Объявите подфункцию, которая означает именование нашего макроса.

Код:

Шаг 4. Сначала активируйте лист, чтобы использовать его свойства с помощью приведенного ниже кода.

Код:

Шаг 5: Теперь давайте попробуем изменить границу ячейки A1. Используйте метод диапазона, как показано ниже,

Код:

Шаг 6: Выберите свойства границ, что даст нам возможность выбрать стиль границы следующим образом:

Код:

Шаг 7: Выберите первую опцию, которая является Xdiagonalup в качестве стиля рамки.

Код:

Шаг 8: Теперь нам нужно использовать стиль линий для границ. После оператора точка (.) Используйте перечисления для стиля линии следующим образом:

Код:

Шаг 9: Тип = знак, и он даст нам многочисленные перечисления для линейного стиля следующим образом:

Код:

Шаг 10: Давайте запустим приведенный выше код, нажав F5, и увидим результат на листе 1 следующим образом:

Пример №2 — Граница VBA

Теперь давайте воспользуемся другим методом для стиля границы в VBA.

Шаг 1: У нас уже вставлен наш модуль. Назовите в нем макрос с помощью другой подфункции следующим образом:

Код:

Шаг 2: Активируйте лист с помощью следующего кода, написанного ниже,

Код:

Шаг 3: Теперь позвольте использовать метод range, чтобы активировать свойства границы, как показано ниже,

Код:

Шаг 4: Теперь запустите приведенный выше код и посмотрите результат на листе 1 следующим образом:

Пример № 3 — Граница VBA

Давайте попробуем еще несколько стилей границ и линий в другой ячейке. На этот раз мы будем использовать его в диапазоне ячеек C5: E6.

Шаг 1: У нас уже вставлен наш модуль. Назовите в нем макрос с помощью другой подфункции следующим образом:

Код:

Шаг 2: Активируйте лист с помощью следующего кода, написанного ниже,

Код:

Шаг 3: Теперь позвольте использовать метод range, чтобы активировать свойства границы, как показано ниже,

Код:

Шаг 4: Теперь запустите приведенный выше код и посмотрите результат на листе 1 следующим образом:

Пример № 4 — Граница VBA

Теперь в этом примере мы будем использовать границы вокруг ячейки, охватывающей всю ячейку. Раньше мы ограничивали только одну часть камеры. Рассмотрим следующие данные, которые мы имеем на листе 2, следующим образом:

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

Шаг 1: У нас уже вставлен наш модуль. Назовите в нем макрос с помощью другой подфункции следующим образом:

Код:

Шаг 2: Активируйте лист с помощью следующего кода, написанного ниже,

Код:

Шаг 3: Теперь давайте используем метод range, чтобы активировать границу вокруг свойств, таких как показано ниже,

Код:

Шаг 4: Теперь используйте стиль линии и толщину линии следующим образом,

Код:

Шаг 5: Запустите приведенный выше код, нажав F5, и просмотрите результат на листе 2 следующим образом:

То, что нужно запомнить

  • Граница вокруг используется для покрытия всех частей клеток.
  • Метод Borders используется для покрытия только части ячейки.
  • X Linestyles используются для использования различных типов стилей в границах.
  • Вставка границ аналогична форматированию данных.
  • Границы в VBA аналогичны границам на рабочем листе, нам нужно запомнить ключевое слово для его использования.

Рекомендуемые статьи

Это руководство по границам VBA. Здесь мы обсудим, как использовать границы в Excel VBA, а также с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи —

  1. Как использовать функцию VBA IsNumeric?
  2. Создание поля со списком в Excel
  3. Вставьте флажок в Excel
  4. Функция VBA UCASE в Excel
  5. VBA Worksheets (шаблон Excel)

Источник

Метод Range.BorderAround (Excel)

Добавляет границу в диапазон и задает свойства Color, LineStyle и Weight объекта Border для новой границы. Variant.

Синтаксис

expression. BorderAround (LineStyle, Weight, ColorIndex, Color, ThemeColor)

выражение: переменная, представляющая объект Range.

Параметры

Имя Обязательный или необязательный Тип данных Описание
LineStyle Необязательный Variant Одна из констант XlLineStyle , задающая стиль линии для границы.
Weight (Вес) Необязательный XlBorderWeight Вес границы.
ColorIndex Необязательный XlColorIndex Цвет границы в виде индекса текущей цветовой палитры или как константы XlColorIndex .
Color Необязательный Variant Цвет границы в виде значения RGB.
ThemeColor Необязательный Variant Цвет темы в качестве индекса текущей цветовой темы или значения XlThemeColor .

Возвращаемое значение

Примечания

Необходимо указать только одно из следующих значений: ColorIndex, Color или ThemeColor.

Можно указать lineStyle или Weight, но не оба варианта. Если не указать ни один из аргументов, Microsoft Excel использует стиль строки и вес по умолчанию.

Этот метод описывает весь диапазон без его заполнения. Чтобы задать границы всех ячеек, необходимо задать свойства Color, LineStyle и Weight для коллекции Borders . Чтобы очистить границу, необходимо задать для свойства LineStyle значение xlLineStyleNone для всех ячеек в диапазоне.

Пример

В этом примере вокруг диапазона A1:D4 на листе Sheet1 добавляется толстая красная граница.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Borders object (Excel)

A collection of four Border objects that represent the four borders of a Range object or Style object.

Use the Borders property to return the Borders collection, which contains all four borders. You can apply different borders to each side of a cell or range. For more information how to apply borders to a range of cells, see Range.Borders property.

You can set border properties for an individual border only with Range and Style objects. Other bordered objects, such as error bars and series lines, have a border that’s treated as a single entity, regardless of how many sides it has. For these objects, you must return and set properties for the entire border as a unit. For more information, see the Border object.

Examples

The following example adds a double border to cell A1 on worksheet one.

Use Borders (index), where index identifies the border, to return a single Border object. Index can be one of the following XlBordersIndex constants: xlDiagonalDown, xlDiagonalUp, xlEdgeBottom, xlEdgeLeft, xlEdgeRight, xlEdgeTop, xlInsideHorizontal, or xlInsideVertical.

The following example sets the color of the bottom border of cells A1:G1 to red.

The following example generates a thin border around all cells in the range.

The following example changes only the inner cell borders of the range.

Properties

See also

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

Макросы для изменения формата ячеек в таблице Excel

В данном примере описаны макросы для автоматического форматирования или спроса формата для ячеек таблиц Excel средствами VBA.

VBA-макрос: заливка, шрифт, линии границ, ширина столбцов и высота строк

В процессе запыления данных сотрудниками отдела на некоторых листах были изменены форматы ячеек:

Необходимо сбросить форматирование ячеек и сделать так чтобы на всех таблицах планов выполнения работ были одинаковые форматы отображения данных. Формат ячеек для исходной таблицы должен быть закреплен за шаблоном, чтобы можно было сделать сброс и применять заданный стиль оформления в дальнейшем.

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

Макросы Excel прекрасно справляются с форматированием ячеек на рабочих листах. Кроме того, делают это быстро и в полностью автоматическом режиме. Воспользуемся этими преимуществами и для решения данной задачи напишем свой код VBA-макроса. Он поможет нам быстро и безопасно сбрасывать форматы на исходный предварительно заданный в шаблоне главной таблицы.

Чтобы написать свой код макроса откройте специальный VBA-редактор в Excel: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» или нажмите комбинацию клавиш ALT+F11:

В редакторе создайте новый модуль выбрав инструмент «Insert»-«Module» и введите в него такой VBA-код макроса:

Sub SbrosFormat()
If TypeName(Selection) <> «Range» Then Exit Sub
With Selection
.HorizontalAlignment = xlVAlignCenter
.VerticalAlignment = xlVAlignCenter
.WrapText = True
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlThin
.Font.ColorIndex = xlColorIndexAutomatic
.Interior.ColorIndex = xlColorIndexAutomatic
.Columns.AutoFit
.Rows.AutoFit
End With
End Sub

Теперь если нам нужно сбросить форматирование таблицы на исходный формат отображения ее данных, выделите диапазон ячеек A1:E20 и запустите макрос: «РАЗРАБОЧТИК»-«Код»-«Макросы»-«SbrosFormat»-«Выполнить». Результат работы макроса изображен ниже на рисунке:

Таблица приобрела формат, который определен макросом. Таким образом код VBA нам позволяет сбросить любые изменения формата ячеек на предустановленный автором отчета.

Описание VBA-макроса для формата ячеек таблицы Excel

Первая инструкция в коде, проверяет выделены ли ячейки диапазоном. Если перед выполнением макроса выделил другой элемент листа, например, график, тогда макрос закрывается и дальнейшие инструкции выполняться не будут. В противные случаи будут форматироваться все выделенные ячейки по очереди в соответствии с определенными настройками форматирования:

  1. Текст в значениях ячеек выравнивается по центру горизонтально и вертикально.
  2. Включен построчный перенос текста.
  3. Все границы ячеек получают черную обычной толщины непрерывную линию с черным цветом.
  4. Сброс цвета шрифта на авто.
  5. Удаляется любая заливка ячеек.
  6. Ширина столбцов автоматически настраивается под текст в ячейках.
  7. Автоматически настроить высоту строк по содержимому ячеек.

Модификация исходного кода макроса для форматирования

Если необходимо сделать так чтобы текст выравнивался не по центру относительно горизонтали, а по правую сторону ячейки, тогда измените константу xlHAlignCenter на xlHAlignRight. Она находиться в свойстве .HorizontalAlignment. Сделайте это следующим образом:

Таким же образом можно выровнять текст по левую сторону изменив значение константы на xlHAlignLeft. Или можно выровнять положение текста по ширине ячейки используя константу xlHAlignJustify.

Чтобы макрос выравнивал текст в ячейках по вертикали к низу, измените строку кода, отвечающую за данную настройку форматирования. Измените константу, которая присваивается к свойству VerticalAlignment в следующий способ:

Если хотите выровнять текс к верху ячейки, тогда воспользуйтесь константой xlHAlignTop.

Если нужно применить для границ ячеек толстую и пунктирную линию в синем цвете, смодифицируйте инструкцию, отвечающую за формат линий:

Описание настройки форматирования для линий границ ячеек. Мы будем получать разные дополнительные типы линий границ если для свойства LineStyle присваивать такие константы:

  • xlDoshDot – применяется для рисования пунктирных линий в границах ячеек;
  • xlDouble – рисует двойную линию;
  • xlHairLine – рисует тонкую линию;
  • xlThick – для рисования очень толстой линии.

Для настройки цвета линий Excel предлагает всего 8 констант для определенных цветов. Константы для настройки цвета линий границ для свойства Color:

  • vbBlack – черный;
  • vbWhite – белый;
  • vbRed – красный;
  • vbGreen –зеленый;
  • vbBlue – синий;
  • vbYellow – желтый;
  • vbMagenta – алый;
  • vbCyan – голубой.

Но при необходимости присвоить линиям границ другие цвета можно вместо константы для свойства Color записать функцию RGB(). Достаточно лишь в аргументе этой функции указать код цвета по шкале от 0 и до 255.

Если нужно применить толстую линию только для границ выделенного диапазона, тогда перед инструкцией End With добавьте следующую строку кода:

.BorderAround xlContinuous, xlMedium, vbBlack

Описание: В первом аргументе для метода BorderAround можно записать также другой стиль линии. Во втором – толщину линии, а в третьем – цвет. Константы, которые можно присвоить в качестве значений для этих аргументов можно использовать те же, которые мы использовали для свойств: LineStyle, Weight, Color.

Если нужно экспонировать первую строку для выделенного диапазона с помощью жирного и курсивного шрифта значений ячеек. А также заполнить ячейки первой строки заливкой с голубым цветом, тогда в самом конце кода макроса перед последней инструкцией End Sub следует добавить несколько строк с VBA-кодом:

Если хотите присвоить такой же формат для не только для первой строки, но и для первого столбца выделенного диапазона, тогда скопируйте и вставьте ниже эти 3 строчки кода. После в последних трех строках измените свойство Rows на Columns.

.Columns (1).Font.Bold = True

.Columns (1).Font.Italic = True

.Columns (1).Interior.Color = vbCyan

Если нужно задать особенный формат для экспонирования последней строки выделенного диапазона, тогда измените число 1 в аргументе свойства Rows на число всех выделенных строк .Rows.Count. Например, добавьте в конец кода еще такую строку:

Полная версия модифицированного кода макроса выглядит так:

Sub SbrosFormat()
If TypeName(Selection) <> «Range» Then Exit Sub
With Selection
.HorizontalAlignment = xlVAlignCenter
.VerticalAlignment = xlVAlignCenter
.WrapText = True
.Borders.LineStyle = xlDash
.Borders.Color = vbBlue
.Borders.Weight = xlMedium
.Font.ColorIndex = xlColorIndexAutomatic
.Interior.ColorIndex = xlColorIndexAutomatic
.Columns.AutoFit
.Rows.AutoFit
.BorderAround xlContinuous, xlMedium, vbBlack
.Rows(1).Font.Bold = True
.Rows(1).Font.Italic = True
.Rows(1).Interior.Color = vbCyan
.Columns(1).Font.Bold = True
.Columns(1).Font.Italic = True
.Columns(1).Interior.Color = vbCyan
.Rows(.Rows.Count).Font.Bold = True
End With
End Sub

Пример работы измененного кода VBA-макроса:

В данном примере вы ознакомились с базовыми возможностями форматирования с помощью VBA-макросов. Уверен, что теперь вы сможете самостоятельно найти практическое применение этим исходным кодам.

Источник

Return to VBA Code Examples

In this Article

  • Formatting Borders
    • Top Border – Double Line
    • Other Cell Borders
    • Inside Borders
    • LineStyle

This tutorial will show how to adjust cell border settings in VBA.

Formatting Borders

Top Border – Double Line

First let’s look at an example of how to set a blue, thick, doubled top border to the cell B3 on Sheet1:example border

Sub ExampleSetBorder()

 With Worksheets("Sheet1").Range("B3").Borders(xlEdgeTop)
  .LineStyle = xlDouble
  .Weight = xlThick
  .ColorIndex = 5
 End With

End Sub

Notice we use a With Statement to simplify our coding.

We access the the top border with .Borders(xlEdgeTop).

Other Cell Borders

Instead you can access other borders, including diagonals:

Worksheets("Sheet1").Range("B2").Borders(xlEdgeTop).Color = RGB(128, 0, 0)
Worksheets("Sheet1").Range("B2").Borders(xlEdgeRight).Color = RGB(0, 255, 0)
Worksheets("Sheet1").Range("B2").Borders(xlEdgeBottom).Color = RGB(0, 0, 128)
Worksheets("Sheet1").Range("B2").Borders(xlEdgeLeft).Color = RGB(255, 0, 0)
Worksheets("Sheet1").Range("B2").Borders(xlDiagonalDown).Color = RGB(0, 0, 0)
Worksheets("Sheet1").Range("B2").Borders(xlDiagonalUp).Color = RGB(0, 0, 0)

border example2

Inside Borders

You can also adjust horizontal (xlInsideHorizontal) and vertical (xlInsideVertical) borders for all cells in a range:

With Worksheets("Sheet1").Range("B2:C6").Borders(xlInsideHorizontal)
 .LineStyle = xlDashDotDot
 .Weight = xlMedium
 .ColorIndex = 3
End With

inside horizontal borders

LineStyle

The LineStyle property can be changed to xlContinuous, xlDot, xlDash, xlDashDot, xlDashDotDot, xlDouble, xlSlantDashDot and xlLineStyleNone.

The Weight property can be either xlHariline, xlThin, xlMedium and xlThick. You will have this result with the code below:

Worksheets("Sheet1").Range("C3").Borders(xlEdgeTop).Weight = xlHairline
Worksheets("Sheet1").Range("C3").Borders(xlEdgeBottom).Weight = xlHairline
Worksheets("Sheet1").Range("D3").Borders(xlEdgeTop).Weight = xlThin
Worksheets("Sheet1").Range("D3").Borders(xlEdgeBottom).Weight = xlThin
Worksheets("Sheet1").Range("E3").Borders(xlEdgeTop).Weight = xlMedium
Worksheets("Sheet1").Range("E3").Borders(xlEdgeBottom).Weight = xlMedium
Worksheets("Sheet1").Range("F3").Borders(xlEdgeTop).Weight = xlThick
Worksheets("Sheet1").Range("F3").Borders(xlEdgeBottom).Weight = xlThick

border weight

Border colors can be set as ColorIndex or Color (RGB, serial number or vbColor). See more information about color settings here.

You can add borders around a range with a one-line command as well:

Range("B5:C7").BorderAround LineStyle:=xlContinuous, Weight:=xlThick, Color:=vbRed

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
vba save as

Learn More!

В данном примере описаны макросы для автоматического форматирования или спроса формата для ячеек таблиц Excel средствами VBA.

VBA-макрос: заливка, шрифт, линии границ, ширина столбцов и высота строк

В процессе запыления данных сотрудниками отдела на некоторых листах были изменены форматы ячеек:

запыления планов работ.

Необходимо сбросить форматирование ячеек и сделать так чтобы на всех таблицах планов выполнения работ были одинаковые форматы отображения данных. Формат ячеек для исходной таблицы должен быть закреплен за шаблоном, чтобы можно было сделать сброс и применять заданный стиль оформления в дальнейшем.

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

Макросы Excel прекрасно справляются с форматированием ячеек на рабочих листах. Кроме того, делают это быстро и в полностью автоматическом режиме. Воспользуемся этими преимуществами и для решения данной задачи напишем свой код VBA-макроса. Он поможет нам быстро и безопасно сбрасывать форматы на исходный предварительно заданный в шаблоне главной таблицы.

Чтобы написать свой код макроса откройте специальный VBA-редактор в Excel: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» или нажмите комбинацию клавиш ALT+F11:

Код Visual Basic.

В редакторе создайте новый модуль выбрав инструмент «Insert»-«Module» и введите в него такой VBA-код макроса:

Sub SbrosFormat()
If TypeName(Selection) <> "Range" Then Exit Sub
With Selection
.HorizontalAlignment = xlVAlignCenter
.VerticalAlignment = xlVAlignCenter
.WrapText = True
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlThin
.Font.ColorIndex = xlColorIndexAutomatic
.Interior.ColorIndex = xlColorIndexAutomatic
.Columns.AutoFit
.Rows.AutoFit
End With
End Sub

VBA-код макроса.

Теперь если нам нужно сбросить форматирование таблицы на исходный формат отображения ее данных, выделите диапазон ячеек A1:E20 и запустите макрос: «РАЗРАБОЧТИК»-«Код»-«Макросы»-«SbrosFormat»-«Выполнить». Результат работы макроса изображен ниже на рисунке:

сбросить форматирование таблицы на исходный формат.

Таблица приобрела формат, который определен макросом. Таким образом код VBA нам позволяет сбросить любые изменения формата ячеек на предустановленный автором отчета.



Описание VBA-макроса для формата ячеек таблицы Excel

Первая инструкция в коде, проверяет выделены ли ячейки диапазоном. Если перед выполнением макроса выделил другой элемент листа, например, график, тогда макрос закрывается и дальнейшие инструкции выполняться не будут. В противные случаи будут форматироваться все выделенные ячейки по очереди в соответствии с определенными настройками форматирования:

  1. Текст в значениях ячеек выравнивается по центру горизонтально и вертикально.
  2. Включен построчный перенос текста.
  3. Все границы ячеек получают черную обычной толщины непрерывную линию с черным цветом.
  4. Сброс цвета шрифта на авто.
  5. Удаляется любая заливка ячеек.
  6. Ширина столбцов автоматически настраивается под текст в ячейках.
  7. Автоматически настроить высоту строк по содержимому ячеек.

Модификация исходного кода макроса для форматирования

Если необходимо сделать так чтобы текст выравнивался не по центру относительно горизонтали, а по правую сторону ячейки, тогда измените константу xlHAlignCenter на xlHAlignRight. Она находиться в свойстве .HorizontalAlignment. Сделайте это следующим образом:

.HorizontalAlignment = xlHAlignRight.

Таким же образом можно выровнять текст по левую сторону изменив значение константы на xlHAlignLeft. Или можно выровнять положение текста по ширине ячейки используя константу xlHAlignJustify.

Чтобы макрос выравнивал текст в ячейках по вертикали к низу, измените строку кода, отвечающую за данную настройку форматирования. Измените константу, которая присваивается к свойству VerticalAlignment в следующий способ:

Если хотите выровнять текс к верху ячейки, тогда воспользуйтесь константой xlHAlignTop.

Если нужно применить для границ ячеек толстую и пунктирную линию в синем цвете, смодифицируйте инструкцию, отвечающую за формат линий:

.Borders.LineStyle = xlDash

.Borders.Color = vbBlue

.Borders.Weight = xlMedium

Описание настройки форматирования для линий границ ячеек. Мы будем получать разные дополнительные типы линий границ если для свойства LineStyle присваивать такие константы:

  • xlDoshDot – применяется для рисования пунктирных линий в границах ячеек;
  • xlDouble – рисует двойную линию;
  • xlHairLine – рисует тонкую линию;
  • xlThick – для рисования очень толстой линии.

Для настройки цвета линий Excel предлагает всего 8 констант для определенных цветов. Константы для настройки цвета линий границ для свойства Color:

  • vbBlack – черный;
  • vbWhite – белый;
  • vbRed – красный;
  • vbGreen –зеленый;
  • vbBlue – синий;
  • vbYellow – желтый;
  • vbMagenta – алый;
  • vbCyan – голубой.

Но при необходимости присвоить линиям границ другие цвета можно вместо константы для свойства Color записать функцию RGB(). Достаточно лишь в аргументе этой функции указать код цвета по шкале от 0 и до 255.

Если нужно применить толстую линию только для границ выделенного диапазона, тогда перед инструкцией End With добавьте следующую строку кода:

.BorderAround xlContinuous, xlMedium, vbBlack

Описание: В первом аргументе для метода BorderAround можно записать также другой стиль линии. Во втором – толщину линии, а в третьем – цвет. Константы, которые можно присвоить в качестве значений для этих аргументов можно использовать те же, которые мы использовали для свойств: LineStyle, Weight, Color.

Если нужно экспонировать первую строку для выделенного диапазона с помощью жирного и курсивного шрифта значений ячеек. А также заполнить ячейки первой строки заливкой с голубым цветом, тогда в самом конце кода макроса перед последней инструкцией End Sub следует добавить несколько строк с VBA-кодом:

.Rows(1).Font.Bold = True

.Rows(1).Font.Italic = True

.Rows(1).Interior.Color = vbCyan

Если хотите присвоить такой же формат для не только для первой строки, но и для первого столбца выделенного диапазона, тогда скопируйте и вставьте ниже эти 3 строчки кода. После в последних трех строках измените свойство Rows на Columns.

.Columns (1).Font.Bold = True

.Columns (1).Font.Italic = True

.Columns (1).Interior.Color = vbCyan

Если нужно задать особенный формат для экспонирования последней строки выделенного диапазона, тогда измените число 1 в аргументе свойства Rows на число всех выделенных строк .Rows.Count. Например, добавьте в конец кода еще такую строку:

.Rows(.Rows.Count).Font.Bold = True

Полная версия модифицированного кода макроса выглядит так:

Sub SbrosFormat()
If TypeName(Selection) <> "Range" Then Exit Sub
With Selection
.HorizontalAlignment = xlVAlignCenter
.VerticalAlignment = xlVAlignCenter
.WrapText = True
.Borders.LineStyle = xlDash
.Borders.Color = vbBlue
.Borders.Weight = xlMedium
.Font.ColorIndex = xlColorIndexAutomatic
.Interior.ColorIndex = xlColorIndexAutomatic
.Columns.AutoFit
.Rows.AutoFit
.BorderAround xlContinuous, xlMedium, vbBlack
.Rows(1).Font.Bold = True
.Rows(1).Font.Italic = True
.Rows(1).Interior.Color = vbCyan
.Columns(1).Font.Bold = True
.Columns(1).Font.Italic = True
.Columns(1).Interior.Color = vbCyan
.Rows(.Rows.Count).Font.Bold = True
End With
End Sub

Пример работы измененного кода VBA-макроса:

Пример после изменений в коде.

В данном примере вы ознакомились с базовыми возможностями форматирования с помощью VBA-макросов. Уверен, что теперь вы сможете самостоятельно найти практическое применение этим исходным кодам.

You can add border to any range in a very dynamic way by using the AddBorder and GetCurrentRegionStartingGivenCell function in Xatocode as follows:

' First you may define a worksheet level named range in starting cell and name it as rngData
Sub BorderExample()

    Dim rngData         As Range ' Range to sort

    Set rngData = GetCurrentRegionStartingGivenCell(shtData.Range("rngData"))

    Call AddBorder(rngData, EdgeLeft)
    Call AddBorder(rngData, EdgeTop)
    Call AddBorder(rngData, EdgeRight)
    Call AddBorder(rngData, EdgeBottom)
    Call AddBorder(rngData, InsideVertical)
    Call AddBorder(rngData, InsideHorizontal)
    Call AddBorder(rngData, DiagonalUp)
    Call AddBorder(rngData, DiagonalDown)
    Call ClearBorder(rngData)
    Call AddBorder(rngData, Box)
    Call AddBorder(rngData, AllBorder)
    Call AddBorder(rngData, AllBorder, xlDot) ' Linestyle
    Call AddBorder(rngData, AllBorder, , xlMedium) ' Thickness
    Call AddBorder(rngData, AllBorder, , , vbRed) ' Color
End Sub

You can read the complete article here

Понравилась статья? Поделить с друзьями:
  • Vba excel границы диапазона ячеек
  • Vba excel градиентная заливка
  • Vba excel глобальная функция
  • Vba excel гиперссылка на ячейку
  • Vba excel гиперссылка на форме