Программное создание границ ячеек произвольного диапазона с помощью кода 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 |
Какие могут быть границы в сочетаниях типа линии и ее толщины, вы можете видеть в диалоговом окне «Формат ячеек» на вкладке «Граница».
Содержание
- VBA Границы — Как использовать границу в Excel VBA (шаблон Excel)
- Границы в Excel VBA
- Как использовать границы в VBA
- Пример № 1 — Границы VBA
- Пример №2 — Граница VBA
- Пример № 3 — Граница VBA
- Пример № 4 — Граница VBA
- То, что нужно запомнить
- Рекомендуемые статьи
- Метод Range.BorderAround (Excel)
- Синтаксис
- Параметры
- Возвращаемое значение
- Примечания
- Пример
- Поддержка и обратная связь
- Borders object (Excel)
- Remarks
- Examples
- Properties
- See also
- Support and feedback
- Макросы для изменения формата ячеек в таблице Excel
- VBA-макрос: заливка, шрифт, линии границ, ширина столбцов и высота строк
- Описание VBA-макроса для формата ячеек таблицы Excel
- Модификация исходного кода макроса для форматирования
VBA Границы — Как использовать границу в Excel VBA (шаблон Excel)
Границы в Excel VBA
Границы являются необходимой частью каждого листа или в любом файле слова. Границы отделяют данные друг от друга, они показывают, какая часть данных относится к какой области, чтобы избежать путаницы. Кроме того, выглядит хорошо иметь границы в нашей таблице данных. В листе Excel у нас есть опции для вставки границ вручную, но как мы это сделаем в VBA, мы узнаем из этой статьи.
Чтобы применить границы в VBA, нам нужен доступ к свойствам ячейки, и в текущем случае нам нужно получить доступ к границам. Теперь нам нужно помнить, что в свойствах границ доступны различные типы опций. Например, диагональ по вертикали вниз и т. Д. Мы рассмотрим некоторые из них здесь.
Как использовать границы в VBA
Чтобы использовать границы в VBA, нам нужно выполнить следующие шаги:
- Используйте метод диапазона для доступа к значению диапазона.
- Используйте метод border, если мы хотим отформатировать только часть ячейки или границы вокруг, если мы хотим покрыть ячейки границами.
- Используйте разные стили линий, чтобы границы выглядели приятнее.
Вы можете скачать этот шаблон 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. Вы также можете просмотреть наши другие предлагаемые статьи —
- Как использовать функцию VBA IsNumeric?
- Создание поля со списком в Excel
- Вставьте флажок в Excel
- Функция VBA UCASE в Excel
- 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
Первая инструкция в коде, проверяет выделены ли ячейки диапазоном. Если перед выполнением макроса выделил другой элемент листа, например, график, тогда макрос закрывается и дальнейшие инструкции выполняться не будут. В противные случаи будут форматироваться все выделенные ячейки по очереди в соответствии с определенными настройками форматирования:
- Текст в значениях ячеек выравнивается по центру горизонтально и вертикально.
- Включен построчный перенос текста.
- Все границы ячеек получают черную обычной толщины непрерывную линию с черным цветом.
- Сброс цвета шрифта на авто.
- Удаляется любая заливка ячеек.
- Ширина столбцов автоматически настраивается под текст в ячейках.
- Автоматически настроить высоту строк по содержимому ячеек.
Модификация исходного кода макроса для форматирования
Если необходимо сделать так чтобы текст выравнивался не по центру относительно горизонтали, а по правую сторону ячейки, тогда измените константу 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:
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)
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
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 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!
Learn More!
В данном примере описаны макросы для автоматического форматирования или спроса формата для ячеек таблиц 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
Первая инструкция в коде, проверяет выделены ли ячейки диапазоном. Если перед выполнением макроса выделил другой элемент листа, например, график, тогда макрос закрывается и дальнейшие инструкции выполняться не будут. В противные случаи будут форматироваться все выделенные ячейки по очереди в соответствии с определенными настройками форматирования:
- Текст в значениях ячеек выравнивается по центру горизонтально и вертикально.
- Включен построчный перенос текста.
- Все границы ячеек получают черную обычной толщины непрерывную линию с черным цветом.
- Сброс цвета шрифта на авто.
- Удаляется любая заливка ячеек.
- Ширина столбцов автоматически настраивается под текст в ячейках.
- Автоматически настроить высоту строк по содержимому ячеек.
Модификация исходного кода макроса для форматирования
Если необходимо сделать так чтобы текст выравнивался не по центру относительно горизонтали, а по правую сторону ячейки, тогда измените константу 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