Excel VBA:范围中的备用行颜色

Kur*_*urt 9 excel vba

今天我花了很长时间查找一种在指定范围内交替行颜色的方法.那里真的不是很多,说实话,我发现看起来过于复杂.所以,我决定停止表现得像一个无耻的'script-kiddy'并将下面的样本放在一起:

Sub AlternateRowColors()
Dim lastRow as Long

lastRow = Range("A1").End(xlDown).Row

For Each Cell In Range("A1:A" & lastRow) ''change range accordingly
    If Cell.Row Mod 2 = 1 Then ''highlights row 2,4,6 etc|= 0 highlights 1,3,5
        Cell.Interior.ColorIndex = 15 ''color to preference
    Else
        Cell.Interior.ColorIndex = xlNone ''color to preference or remove
    End If
Next Cell

End Sub
Run Code Online (Sandbox Code Playgroud)

现在我知道这有效,但我想知道是否有更简单的方法?

如果是这样,请告诉我,因为我非常渴望学习简化,因为我现在倾向于编写详细的代码.如果没有,那么这个条目是否可以找到谷歌第1页的搜索条件,因为我花了很长时间才找到任何有用的东西.


留给脚本小子的好处的评论.

如果您的数据不包含任何预先存在的颜色,则可能会删除以下代码行:

    Else
        Cell.Interior.ColorIndex = xlNone
Run Code Online (Sandbox Code Playgroud)

Jon*_*ell 9

我需要经常这样做,并希望能够轻松修改我用于条带的颜色.以下子目录非常简单:

Sub GreenBarMe(rng As Range, firstColor As Long, secondColor As Long)
    rng.Interior.ColorIndex = xlNone
    rng.FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(ROW(),2)=0"
    rng.FormatConditions(1).Interior.Color = firstColor
    rng.FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(ROW(),2)<>0"
    rng.FormatConditions(2).Interior.Color = secondColor
End Sub
Run Code Online (Sandbox Code Playgroud)

用法:

Sub TestGreenBarFormatting()
    Dim rng As Range
    Dim firstColor As Long
    Dim secondColor As Long

    Set rng = Range("A1:D12")
    firstColor = vbGreen
    secondColor = vbYellow

    Call GreenBarMe(rng, firstColor, secondColor)
End Sub
Run Code Online (Sandbox Code Playgroud)


e.J*_*mes 7

可以使用条件格式完成交替行颜色:

屏幕截图