更改Excel工作表中的行边框颜色

更改Excel工作表中的行边框颜色,excel,vba,range,Excel,Vba,Range,在帮助下,我构建了一个宏来调整表的大小。调整表的大小以添加行时,新行的边框颜色错误 我说到这一点。如果我可以让rows循环工作,我将为列创建另一个循环,以刷新这两个列的格式。数据主体的底部行边框(总计行上方)不应更改,总计行也不应受到任何影响 它告诉我我不能使用:s.ListRows(x).Borders(xlEdgeTop)-但我需要一种方法来定位表。我该怎么办 Set r = Worksheets("Proposed").Range("Proposed[Strategy/Type]") i

在帮助下,我构建了一个宏来调整表的大小。调整表的大小以添加行时,新行的边框颜色错误

我说到这一点。如果我可以让rows循环工作,我将为列创建另一个循环,以刷新这两个列的格式。数据主体的底部行边框(总计行上方)不应更改,总计行也不应受到任何影响

它告诉我我不能使用: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

与您的案例相关,请参考下面所示的解决方案(对于快速原型设计,我使用的是窄12…20
行(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


希望这能有所帮助。

您到底遇到了什么错误?对象不支持此属性或方法。我添加了s.ListRows.Count(代替20)和s.ListRows(x)(代替行(x))。它不喜欢-With.Borders(xlTop)行。错误与以前相同。不,您应该使用行(x)如图所示,只需将20替换为s.ListRows.Count。它可以工作,但会将格式添加到工作表中的所有行中。是否有任何方法将其缩小到仅listobject?顺便说一句,非常感谢您的帮助!我非常感谢。我帮了我很多忙。我在这个问题上花费了很多时间。是的,我刚刚向sec扩展了答案ond解决方案:使用范围对象,如图所示。