Как применить границы к ячейке?

Чтобы применить границы к ячейке с помощью VBA в Excel, вы можете использовать два разных метода. Первое — это свойство «Borders», а второе — метод «BorderAround». Единственная разница между этими двумя методами заключается в свойстве «Границы», вы даже можете применить границу к одной стороне ячейки, а граница вокруг нее будет полностью применена к ячейке.

В этом уроке мы рассмотрим оба способа и рассмотрим различные способы добавления границы.

Свойство границы VBA

  1. Сначала вам нужно указать диапазон или ячейку, к которой вы хотите применить границу, с помощью объекта диапазона.
    specify the range or cell
  2. После этого введите точку (.), а затем выберите свойство «Границы» из списка свойств и методов.
    type a dot and then select the border
  3. Затем укажите индекс границы из доступных констант. Здесь я использую «xlEdgeBottom», чтобы применить границу только к нижней части ячейки.
    specify the border index
  4. Отсюда укажите стиль линии, используя «LineStyle». В качестве стиля линии я использую «xlContinuonus».
    specify th line style
 Sub vba_borders() Range("A1") _ .Borders(xlEdgeBottom) _ .LineStyle = XlLineStyle.xlContinuous End Sub

Теперь, когда вы запустите этот код, он добавит границу внизу ячейки A1.

это добавит границу внизу

Использование разных цветов с помощью Color Index/Color

Точно так же, как вы обычно выбираете цвет границы, когда делаете это вручную. В свойстве border вы также можете использовать индекс цвета и свойство цвета, чтобы использовать цвет, отличный от цвета по умолчанию.

Рассмотрим код ниже.

 With Range("A1").Borders(xlEdgeBottom) .LineStyle = XlLineStyle.xlContinuous .Color = RGB(255, 0, 0) End With

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

использование разных цветов с цветовым индексом

Или, если вы хотите использовать свойство colorindex, код будет таким.

 With Range("A1").Borders(xlEdgeBottom) .LineStyle = XlLineStyle.xlContinuous .ColorIndex = 7 End With
свойство индекса цвета

Связанный: VBA с декларацией

Добавить границу внутри ячейки

Если вы хотите применить границу внутри ячейки, в этом случае вам нужно использовать «xlDiagonalUp» и «xlDiagonalDown» в качестве 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
добавить границу внутри ячейки

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

Метод VBA BorderAround

В свойстве VBA BorderAround имеется 5 необязательных аргументов, но для правильного применения границы к ячейке необходимо указать два.

Метод границы вокруг VBA

Следующий код применяет границу вокруг диапазона A1:A3 при запуске макроса.

 Range("A1:A3").BorderAround _ LineStyle:=xlContinuous, _ Weight:=xlThin
укажите правильное применение границы к ячейке

Добавьте границу к каждой ячейке в диапазоне

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

 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
Добавьте границу к каждой ячейке в диапазоне

Применить границу ко всем ячейкам с текстом

В следующем коде используются FOR LOOP, USED RANGE, IFEMPTY и IF STATEMENT, чтобы применить границы только к тем ячейкам, в которых есть значение.

 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

Удалить границы

Просто используйте стиль линии «xlNone».

 Range("A1").Borders(xlDiagonalDown).LineStyle = xlNone

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

 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