Изменение цвета границы строк в листе Excel

С помощью я построил макрос для изменения размера таблиц. При изменении размера таблицы для добавления строк границы новых строк приобретают неправильный цвет.

Я дошел до этой точки. Если бы я мог заставить цикл строк работать, я бы сделал еще один цикл для столбцов, чтобы обновить форматирование для обоих. Граница нижней строки тела данных (над строкой итогов) не должна изменяться, и строка итогов не должна изменяться вообще.

Он говорит мне, что я не могу использовать: s.ListRows(x).Borders(xlEdgeTop) - но мне нужен способ нацеливания на таблицу. Что я должен делать?

Set r = Worksheets("Proposed").Range("Proposed[Strategy/Type]")
i = Application.WorksheetFunction.CountIf(r, "Dividend")
i = i + 13
Set s = Worksheets("Dividend").ListObjects("Dividend")
s.Resize Range("$A$12:$J$" & i)
For x = 1 To s.ListRows.Count
    With s.ListRows(x).Borders(xlEdgeTop)
    .LineStyle = xlContinuous
    .ThemeColor = 1
    .TintAndShade = -0.149906918546098
    .Weight = xlThin
End With
Next x

1 ответ

Решение

Для вашего случая обратитесь к решению, показанному ниже (для быстрого создания прототипа я использовал узкие 12...20 Rows(x) диапазон - замените его фактической верхней границей, рассчитанной как s.ListRows.Count:

For x = 12 To 20
    With Rows(x)
        With .Borders(xlEdgeTop)
        .Weight = xlThin
        .ColorIndex = xlAutomatic
        .LineStyle = xlContinuous
        End With
    End With
Next x

Лучшее решение - применить стиль границы ко всему диапазону, не проходя по строкам, как показано в следующем примере:

With Range("A12:J" & 20)
    With .Borders(xlTop)
        .Weight = xlThin
        .ColorIndex = xlAutomatic
        .LineStyle = xlContinuous
        '.ThemeColor = 1
        .TintAndShade = -0.149906918546098
    End With
End With

В обоих случаях просто замените верхнюю границу "20" на рассчитанную s.ListRows.Count,

Надеюсь, что это может помочь.

Другие вопросы по тегам