Изменение цвета границы строк в листе 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
,
Надеюсь, что это может помочь.