Как добавить нижнюю границу вдоль строки, объединяющей ячейки с форматом VBAConditons - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть лист, где в столбце B ячейки объединены со строкой ниже.В остальных столбцах строки не объединяются.

Я хочу добавить код VBA, который рисует линию в нижней части всей строки вдоль нижней части объединенных ячеек.Это как если бы я хотел нарисовать нижнюю границу через каждую строку для всех столбцов (кроме B, где каждая объединенная ячейка будет иметь нижнюю границу).Я попытался использовать следующий код, но граница не отображается под объединенными ячейками

Sub FormatTest()

With Sheets("Test")

    With .Range("$B:$Z")
        .FormatConditions.Add xlExpression, Formula1:="=mod(row(),2)=0"
        With .FormatConditions(1).Borders(xlBottom)
          .LineStyle = xlContinuous
          .ColorIndex = xlAutomatic
          .TintAndShade = 0
          .Weight = xlThin
        End With
        .FormatConditions(1).StopIfTrue = False
    End With

End With
End Sub

Вот пример того, чего я хочу достичь

Example

Я хочу добиться этого с помощью условного форматирования, потому что время от времени будет меняться число строк, и я не хочу иметь границы для пустых ячеек.

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

1 Ответ

0 голосов
/ 07 декабря 2018

Вы можете попытаться использовать что-то вроде этого:

(Просто, возможно, придется повозиться с row = 1, чтобы получить правильную начальную позицию)

Dim row As Long
Dim lastRow As Long
Dim lCol As Long
Dim letter As String

With ThisWorkbook.Worksheets("your sheet name")
    ' clear previous borders
    .Range("A5:ZZ30000").Borders.Linestyle = xlNone
    ' add new borders
    lastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
    lCol = .Cells(1, .Columns.Count).End(xlToLeft).Column ' checks row 1 for last col
    letter = Split(.Cells(1, lCol).Address, "$")(1)
    For row = 1 To lastRow+1 Step 2
        With .Range("B" & row & letter & row).Borders(xlBottom)
            .LineStyle = xlContinuous
            .Weight = xlThin
        End With  
    Next
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...