Программное создание границ ячеек произвольного диапазона с помощью кода 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 |
Какие могут быть границы в сочетаниях типа линии и ее толщины, вы можете видеть в диалоговом окне «Формат ячеек» на вкладке «Граница».
Рисовать границы для разных ячеек вручную – это потребует много драгоценного времени и сил. Лучше применить специальный макрос, который сам поставит границы с разными типами и цветами линий для объединенных и необъединенных ячеек. Он автоматически определит положение объединенных ячеек и сам присвоит им линии границ в соответствии со всеми пожеланиями пользователя.
Как изменить границы макросом в ячейках таблицы Excel
У нас иметься отчет по продажам в магазинах целой ритейловской сети, которые разделены на группы городов по отдельным штатам. В таблице отчета имеются объединенные ячейки:
Нам необходимо:
- Отформатировать ячейки таблицы таким образом, чтобы были установленные границы с толстой линией только для диапазонов каждого отдельного штата. А внутри группы городов каждого штата необходимо установить ячейкам границы с тонкой линией.
- Таким же образом хотим форматировать ячейки в объединенных диапазонах, охватывающих несколько столбцов. А, столбцы с показателями продаж и выручки необходимо отделить тонкими линиями. Дополнительно целая таблица должна иметь самую толстую линию для внешней границы по периметру.
- Если объединенная ячейка охватывает несколько строк, то границы ячеек, отделяющие эти строки, будут иметь тоненькие линии. По аналогичному принципу будут определены границы столбцов которых охватывает объединенная ячейка.
Напишем свой макрос, который сам автоматически выполнит весь этот объем работы для любой таблицы. Откройте редактор Visual Basic (ALT+F11):
А затем создайте новый модуль с помощью инструмента: «Insert»-«Module». А потом введите в него следующий VBA-код:
Sub BorderLine()
Dim i As Long
Selection.Borders(xlEdgeBottom).Weight = xlMedium
Selection.Borders(xlEdgeTop).Weight = xlMedium
Selection.Borders(xlEdgeLeft).Weight = xlMedium
Selection.Borders(xlEdgeRight).Weight = xlMedium
Selection.Borders(xlInsideHorizontal).Weight = xlThin
Selection.Borders(xlInsideVertical).Weight = xlThin
For i = 1 To Selection.Count
If Selection(i).MergeArea.Address <> Selection(i).Address Then
Application.Intersect(Selection, Selection(i).MergeArea.EntireColumn).Borders(xlInsideVertical).Weight = xlHairline
Application.Intersect(Selection, Selection(i).MergeArea.EntireRow).Borders(xlInsideHorizontal).Weight = xlHairline
End If
Next
End Sub
Теперь если мы хотим автоматически форматировать целую таблицу в один клик мышки, выделите диапазон A1:D18. А потом просто выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«BorderLine»-«Выполнить».
Чтобы группы данных по строкам и столбцам на против объединенных ячеек были экспонированы границами пользовательской толщены, сначала кода присваиваем линию увеличенной толщины для внешних границ выделенного диапазона. А внутренним границам присваивается линия со стандартной толщиной. Далее с помощью цикла выполняется проход по каждой ячейке выделенного диапазона и все они проверяются. Если ячейка является объединенной, то ей присваивается соответственная граница. Конечно же изменения границ касаются только для ячеек внутри выделенного диапазона.
С помощью свойства Weight можно установить 4 типа толщины линии для границ ячеек:
- xlThink – наиболее толстая линия.
- xlMedium – просто толстая граница.
- xlThin – стандартная толщина линии для границ.
- xlHairLine – свойство для самой тонкой границы ячейки.
Внимание! Если перед использованием макроса некоторые ячейки уже имели свои линии границ в другом цвете кроме черного или их лини были в другом стиле, тогда после запуска макроса некоторые ячейки могут получить другой цвет или стиль обводки. Чтобы перестраховаться от таких ошибок, в начале кода макроса, после строки декларации переменной i, вставим еще 2 строки с кодом:
Selection.Borders.Color = vbBlack
Selection.Borders.Color = xlContinuous
Полная версия макроса, работающего безошибочно при любых условиях и форматах для исходной таблицы:
Sub BorderLine()
Dim i As Long
Selection.Borders.Color = vbBlack
Selection.Borders.Color = xlContinuous
Selection.Borders(xlEdgeBottom).Weight = xlMedium
Selection.Borders(xlEdgeTop).Weight = xlMedium
Selection.Borders(xlEdgeLeft).Weight = xlMedium
Selection.Borders(xlEdgeRight).Weight = xlMedium
Selection.Borders(xlInsideHorizontal).Weight = xlThin
Selection.Borders(xlInsideVertical).Weight = xlThin
For i = 1 To Selection.Count
If Selection(i).MergeArea.Address <> Selection(i).Address Then
Application.Intersect(Selection, Selection(i).MergeArea.EntireColumn).Borders(xlInsideVertical).Weight = xlHairline
Application.Intersect(Selection, Selection(i).MergeArea.EntireRow).Borders(xlInsideHorizontal).Weight = xlHairline
End If
Next
End Sub
Теперь можно уверенно и быстро красиво форматировать большие таблицы по одному клику мышкой или нажатию комбинации горячих клавиш для вызова соответственного макроса.
vovik_lmz Пользователь Сообщений: 137 |
Выделение границ заполненных ячеек с помощью макроса With Sheets(D).Range(«C» & PA & «:G» & UL).Borders(xlEdgeLeft) В данном случае PA и UL номера строк, опеределяемые ранее этого события, при формировании отчета. Но PA это первая строка отчета, которая всегда заполняется, а вот UL последняя возможная строка, которая может быть и не заполнена. |
vovik_lmz Пользователь Сообщений: 137 |
у меня есть предположение, что нужно определить последнюю заполненную строку. но как это сделать?? и как правильно указать диапазон? |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
{quote}{login=vovik_lmz}{date=12.01.2012 11:20}{thema=}{post}у меня есть предположение, что нужно определить последнюю заполненную строку. но как это сделать?? {/post}{/quote}Поиск последней строки 152 раза обсуждался… Например, так: |
vovik_lmz Пользователь Сообщений: 137 |
Это знаю. я просто не так выразился. как это все применить? |
vovik_lmz, 1) включите макрорекордер |
|
vovik_lmz Пользователь Сообщений: 137 |
Все это уже давно было сделано. как выделить ячейку я знаю. |
Sub Макрос1() |
|
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
{quote}{login=vovik_lmz}{date=12.01.2012 12:19}{thema=}{post}Но мне нужно именно, чтобы код выделял только заполненные ячейки!!!{/post}{/quote}В диапазоне А1:С3 НЕ ЗАПОЛНЕНА ячейка В2 — как вы её НЕ ВЫДЕЛИТЕ? |
У меня смысл отчета таков, что внутри таблицы все заполнено. пустых нет |
|
{quote}{login=The_Prist}{date=12.01.2012 12:29}{thema=}{post} <EM>Как определить последнюю ячейку на листе через VBA?</EM> А вообще вопрос по последней ячейке поднимался не однократно.{/post}{/quote} По поводу последней строки я уже ответил, что это я знаю как сделать. вопрос в другом. выделение границ всех ячеек таблицы (заполненных, хотя они и так в таблице все заполнены) |
|
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
vovik_lmz, тогда в чём проблема — запишите оформление диапазона макроркородером, а затем в коде замените номер нижней строки на LastRow. |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
{quote}{login=}{date=12.01.2012 12:58}{thema=}{post}У меня смысл отчета таков, что внутри таблицы все заполнено. пустых нет{/post}{/quote}Тогда формулируйте иначе. Ведь сбивает с толку такое: «Но мне нужно именно, чтобы код выделял только заполненные ячейки!!!» |
Заполненные ячейки — я подразумевал таблицу. она представляет из себя заполненные ячейки. Ну может и не правильно сформулировал. извиняюсь. |
|
vovik_lmz Пользователь Сообщений: 137 |
макрорекодером все оформление уже записал. |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
{quote}{login=}{date=12.01.2012 01:42}{thema=}{post}По поводу последней строки я понял. а первую строку таблицы как найти? с учетом того что над и под этой таблицей может быть другая таблица.{/post}{/quote}Откуда же нам знать, не видя Вашего файла-примера? Возможно, есть какой-то текст в одном из столбцов, по которому можно найти… |
vovik_lmz Пользователь Сообщений: 137 |
{quote}{login=Юрий М}{date=12.01.2012 02:13}{thema=Re: }{post}{quote}{login=}{date=12.01.2012 01:42}{thema=}{post}По поводу последней строки я понял. а первую строку таблицы как найти? с учетом того что над и под этой таблицей может быть другая таблица.{/post}{/quote}Откуда же нам знать, не видя Вашего файла-примера? Возможно, есть какой-то текст в одном из столбцов, по которому можно найти…{/post}{/quote} Да есть. В верхней левой ячейке таблицы(столбец С) указываю «Маршрут» без кавычек. Следующая за ней таблица опять начинается со слова «Маршрут» в столбце С. |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
Ну и ищите (Find) снизу — найденная строка и будет для Вас верхней границей нужного диапазона (для последней таблицы). |
vovik_lmz Пользователь Сообщений: 137 |
{quote}{login=Юрий М}{date=12.01.2012 03:17}{thema=}{post}Ну и ищите (Find) снизу — найденная строка и будет для Вас верхней границей нужного диапазона (для последней таблицы).{/post}{/quote} Юрий, на одном листе в столбце С может быть несколько ячеек со словом «Маршрут». |
Юрий М Модератор Сообщений: 60577 Контакты см. в профиле |
Но Вас же интересует только последний? Ищите снизу. Если нужно обработать все таблицы — считайте количество строк между ними. |
vovik_lmz Пользователь Сообщений: 137 |
{quote}{login=The_Prist}{date=12.01.2012 03:20}{thema=}{post}Sub Make_Borders() подскажите, что эта строка означает? Как мне свой диапазон задать? |
Kuzmich Пользователь Сообщений: 7998 |
vovik_lmz |
vovik_lmz Пользователь Сообщений: 137 |
#22 12.01.2012 16:44:32 Спасибо. попробую и отпишусь |
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
To apply borders to a cell using VBA in Excel, you can use two different ways. The first is the “Borders“ property and the second is the “BorderAround” method. The only difference between these two ways is in the “Borders” property you can even apply the border to one side of the cell and in the border around it applies to the cell completely.
In this tutorial, we will explore both ways and look at what are the different ways to add the border.
VBA Border Property
- First, you need to specify the range or the cell where you wish to apply the border using the range object.
- After that, type a dot (.) and then select the “Borders” property from the list of properties and methods.
- Next, specify the border index from the contants avaiable. Here I’m using “xlEdgeBottom” to apply border only to the bottom of the cell.
- From here, specify the line style using the “LineStyle”. I’m using the “xlContinuonus” as the line style.
Sub vba_borders()
Range("A1") _
.Borders(xlEdgeBottom) _
.LineStyle = XlLineStyle.xlContinuous
End Sub
Now when you run this code, it will add a border to the bottom of the cell A1.
Using Different Colors with Color Index/Color
Just like you normally choose the color for the border when you do it manually. In the border property, you can further use the color index and color property to use a color other than the default color.
Consider the below code.
With Range("A1").Borders(xlEdgeBottom)
.LineStyle = XlLineStyle.xlContinuous
.Color = RGB(255, 0, 0)
End With
When you run this macro, it adds a border to the bottom of the cell with a red color.
Or if you want to use the colorindex property then the code would be like.
With Range("A1").Borders(xlEdgeBottom)
.LineStyle = XlLineStyle.xlContinuous
.ColorIndex = 7
End With
Related: VBA With Statement
Add Border Inside a Cell
If you want to apply a border inside a cell, in that case, you need to use “xlDiagonalUp” and “xlDiagonalDown” as the xlBorderIndex.
With Range("A1").Borders(xlDiagonalUp)
.LineStyle = XlLineStyle.xlDashDotDot
.Color = RGB(255, 0, 0)
End With
With Range("A1").Borders(xlDiagonalDown)
.LineStyle = XlLineStyle.xlDashDotDot
.Color = RGB(255, 0, 0)
End With
When you run the above code, it adds a border inside the cell upward and downward.
VBA BorderAround Method
In VBA’s BorderAround property you have 5 arguments to which are optional but two need to be specified to apply the border to a cell in the right way.
The following code applies the border around the range A1:A3 when you run the macro.
Range("A1:A3").BorderAround _
LineStyle:=xlContinuous, _
Weight:=xlThin
Add Border to Each Cell in the Range
The following code loops through all the cells in the range and applies the border to each cell one by one.
Sub vba_borders()
Dim iRange As Range
Dim iCells As Range
Set iRange = Range("A1:A10")
For Each iCells In iRange
iCells.BorderAround _
LineStyle:=xlContinuous, _
Weight:=xlThin
Next iCells
End Sub
Apply Border to All the Cells with Text
The following code uses a FOR LOOP, USED RANGE, IFEMPTY, and IF STATEMENT to apply borders to the only cells where you have value.
Dim iRange As Range
Dim iCells As Range
Set iRange = ThisWorkbook.ActiveSheet.UsedRange
For Each iCells In iRange
If Not IsEmpty(iCells) Then
iCells.BorderAround _
LineStyle:=xlContinuous, _
Weight:=xlThin
End If
Next iCells
Remove Borders
You just need to use line style “xlNone”.
Range("A1").Borders(xlDiagonalDown).LineStyle = xlNone
And if you want to remove the border from all the cells in a worksheet where you have a value, consider the following code.
Dim iRange As Range
Dim iCells As Range
Set iRange = ThisWorkbook.ActiveSheet.UsedRange
For Each iCells In iRange
If Not IsEmpty(iCells) Then
iCells.Borders(xlDiagonalDown).LineStyle = xlNone
End If
Next iCells
More Tutorials
- Count Rows using VBA in Excel
- Excel VBA Font (Color, Size, Type, and Bold)
- Excel VBA Hide and Unhide a Column or a Row
- Excel VBA Range – Working with Range and Cells in VBA
- Find Last Row, Column, and Cell using VBA in Excel
- Insert a Row using VBA in Excel
- Merge Cells in Excel using a VBA Code
- Select a Range/Cell using VBA in Excel
- SELECT ALL the Cells in a Worksheet using a VBA Code
- ActiveCell in VBA in Excel
- Special Cells Method in VBA in Excel
- UsedRange Property in VBA in Excel
- VBA AutoFit (Rows, Column, or the Entire Worksheet)
- VBA ClearContents (from a Cell, Range, or Entire Worksheet)
- VBA Copy Range to Another Sheet + Workbook
- VBA Enter Value in a Cell (Set, Get and Change)
- VBA Insert Column (Single and Multiple)
- VBA Named Range | (Static + from Selection + Dynamic)
- VBA Range Offset
- VBA Sort Range | (Descending, Multiple Columns, Sort Orientation
- VBA Wrap Text (Cell, Range, and Entire Worksheet)
- VBA Check IF a Cell is Empty + Multiple Cells
⇠ Back to What is VBA in Excel
Helpful Links – Developer Tab – Visual Basic Editor – Run a Macro – Personal Macro Workbook – Excel Macro Recorder – VBA Interview Questions – VBA Codes
0 / 0 / 0 Регистрация: 31.08.2016 Сообщений: 8 |
|
1 |
|
01.11.2016, 00:51. Показов 8695. Ответов 3
И снова выручайте, други почти закончил проект, осталась одна маленькая загвоздка, нужно нарисовать только внешнюю границу в excel у стобика 4 на 1 ячейки .Range(«H11:H14»).Borders.LineStyle = True — прорисовывает все границы в указанном диапозоне, у всех 4 ячеек, а мне нужно только внешнюю.
0 |
Заблокирован |
||||||||
01.11.2016, 07:04 |
2 |
|||||||
Сообщение было отмечено MehrunesPro как решение РешениеЭто код для VBA —
может быть и vbnet прокатит, ну или с минимальными переделками? Добавлено через 5 минут
5 |
0 / 0 / 0 Регистрация: 31.08.2016 Сообщений: 8 |
|
01.11.2016, 09:21 [ТС] |
3 |
Спасибо) Сработало)
0 |
ovva 4278 / 3417 / 827 Регистрация: 02.02.2013 Сообщений: 3,305 Записей в блоге: 2 |
||||
01.11.2016, 14:12 |
4 |
|||
В терминах Excel VBA
2 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
01.11.2016, 14:12 |
4 |
- Границы в Excel VBA
Границы в 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: Объявите подфункцию, которая означает именование нашего макроса.
Код:
Sub Sample () End Sub
Шаг 4. Сначала активируйте лист, чтобы использовать его свойства с помощью приведенного ниже кода.
Код:
Sub Sample () Worksheets ("Sheet1"). Активировать End Sub
Шаг 5: Теперь давайте попробуем изменить границу ячейки A1. Используйте метод диапазона, как показано ниже,
Код:
Sub Sample () Worksheets ("Sheet1"). Активировать диапазон ("A1"). Границы End Sub
Шаг 6: Выберите свойства границ, что даст нам возможность выбрать стиль границы следующим образом:
Код:
Sub Sample () Worksheets ("Sheet1"). Активировать диапазон ("A1"). Границы (End Sub
Шаг 7: Выберите первую опцию, которая является Xdiagonalup в качестве стиля рамки.
Код:
Sub Sample () Worksheets ("Sheet1"). Активировать диапазон ("A1"). Границы (xlDiagonalUp) End Sub
Шаг 8: Теперь нам нужно использовать стиль линий для границ. После оператора точка (.) Используйте перечисления для стиля линии следующим образом:
Код:
Sub Sample () Worksheets ("Sheet1"). Активировать диапазон ("A1"). Границы (xlDiagonalUp) .LineStyle End Sub
Шаг 9: Тип = знак, и он даст нам многочисленные перечисления для линейного стиля следующим образом:
Код:
Sub Sample () Worksheets ("Sheet1"). Активировать диапазон ("A1"). Границы (xlDiagonalUp) .LineStyle = XlLineStyle.xlDouble End Sub
Шаг 10: Давайте запустим приведенный выше код, нажав F5, и увидим результат на листе 1 следующим образом:
Пример №2 — Граница VBA
Теперь давайте воспользуемся другим методом для стиля границы в VBA.
Шаг 1: У нас уже вставлен наш модуль. Назовите в нем макрос с помощью другой подфункции следующим образом:
Код:
Sub Sample1 () End Sub
Шаг 2: Активируйте лист с помощью следующего кода, написанного ниже,
Код:
Sub Sample1 () Worksheets ("Sheet1"). Активировать End Sub
Шаг 3: Теперь позвольте использовать метод range, чтобы активировать свойства границы, как показано ниже,
Код:
Sub Sample1 () Рабочие листы ("Sheet1"). Активировать диапазон ("C1"). Границы (xlEdgeBottom) .LineStyle = XlLineStyle.xlDashDot End Sub
Шаг 4: Теперь запустите приведенный выше код и посмотрите результат на листе 1 следующим образом:
Пример № 3 — Граница VBA
Давайте попробуем еще несколько стилей границ и линий в другой ячейке. На этот раз мы будем использовать его в диапазоне ячеек C5: E6.
Шаг 1: У нас уже вставлен наш модуль. Назовите в нем макрос с помощью другой подфункции следующим образом:
Код:
Sub Sample2 () End Sub
Шаг 2: Активируйте лист с помощью следующего кода, написанного ниже,
Код:
Sub Sample2 () Worksheets ("Sheet3"). Активировать End Sub
Шаг 3: Теперь позвольте использовать метод range, чтобы активировать свойства границы, как показано ниже,
Код:
Sub Sample2 () Рабочие листы ("Sheet3"). Активировать диапазон ("C5: E6"). Границы (xlEdgeTop) .LineStyle = XlLineStyle.xlSlantDashDot End Sub
Шаг 4: Теперь запустите приведенный выше код и посмотрите результат на листе 1 следующим образом:
Пример № 4 — Граница VBA
Теперь в этом примере мы будем использовать границы вокруг ячейки, охватывающей всю ячейку. Раньше мы ограничивали только одну часть камеры. Рассмотрим следующие данные, которые мы имеем на листе 2, следующим образом:
Давайте попробуем использовать границу вокруг этих данных, используя границу вокруг метода.
Шаг 1: У нас уже вставлен наш модуль. Назовите в нем макрос с помощью другой подфункции следующим образом:
Код:
Sub Sample3 () End Sub
Шаг 2: Активируйте лист с помощью следующего кода, написанного ниже,
Код:
Sub Sample3 () Worksheets ("Sheet2"). Активировать End Sub
Шаг 3: Теперь давайте используем метод range, чтобы активировать границу вокруг свойств, таких как показано ниже,
Код:
Sub Sample3 () Рабочие листы ("Sheet2"). Активировать диапазон ("A1: B6"). BorderAround End Sub
Шаг 4: Теперь используйте стиль линии и толщину линии следующим образом,
Код:
Sub Sample3 () Worksheets ("Sheet2"). Активировать диапазон ("A1: B6"). BorderAround LineStyle: = xlContinuous, Weight: = xlThick End Sub
Шаг 5: Запустите приведенный выше код, нажав F5, и просмотрите результат на листе 2 следующим образом:
То, что нужно запомнить
- Граница вокруг используется для покрытия всех частей клеток.
- Метод Borders используется для покрытия только части ячейки.
- X Linestyles используются для использования различных типов стилей в границах.
- Вставка границ аналогична форматированию данных.
- Границы в VBA аналогичны границам на рабочем листе, нам нужно запомнить ключевое слово для его использования.
Рекомендуемые статьи
Это руководство по границам VBA. Здесь мы обсудим, как использовать границы в Excel VBA, а также с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи —
- Как использовать функцию VBA IsNumeric?
- Создание поля со списком в Excel
- Вставьте флажок в Excel
- Функция VBA UCASE в Excel
- VBA Worksheets (шаблон Excel)