更改每隔一行的背景颜色

时间:2014-07-30 10:21:10

标签: excel-vba vba excel

我有一个给定的som(一般)范围,我想要一个函数来改变visual basic函数中每隔一行的背景颜色。

当然可以通过它循环并使用mod函数,但我认为必须有更快的东西。

提前致谢。

编辑:我知道条件格式化,但我需要在Ranges上反复使用大小不同的东西,所以我希望它是一个我可以作为sub的一部分运行的函数。 / p>

3 个答案:

答案 0 :(得分:1)

使用此

Sub ChangeEverySecond()
    Dim r As Range
    Set r = Range("A2:A20")
    Dim tmp As Range, i As Integer

    For Each tmp In r.Cells
        i = i + 1
        If i Mod 2 = 0 Then tmp.Interior.Color = RGB(127, 187, 199)
    Next tmp
End Sub

编辑1:

使用函数进行条件格式化:

=IF(MOD(ROW();2)=0;TRUE;FALSE)

答案 1 :(得分:0)

在Excel中,您可以使用conditional formatting为每隔一行着色。

答案 2 :(得分:0)

请在下面找到不使用MOD功能的解决方案

Sub ColourEveryOtherRow()

'###############################
'Macro developed by Paolo Succo
'###############################

    Dim firstCol As Long, lastRow As Long, lastCol As Long
    Dim x As Long, Cnt As Long
    Dim index As Boolean
    Dim dataRng As Range

    'speeding up the code
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    'change the range as convenient
    Set dataRng = ActiveSheet.Range("A2:AX10000")

    'set the range parameters
    lastRow = dataRng.Rows.Count
    firstCol = dataRng.Column
    lastCol = dataRng.Columns.Count
    x = 2

    For Cnt = 2 To lastRow + 1
        index = (Int(x / 2) = x / 2)

        'RBG(242, 242, 242) is grey, change as convenient
        If index = True Then
            Range(Cells(Cnt, firstCol), Cells(Cnt, firstCol + lastCol - 1)).Interior.Color = RGB(242, 242, 242)
        Else
            Range(Cells(Cnt, firstCol), Cells(Cnt, firstCol + lastCol - 1)).Interior.Color = xlColorIndexNone
        End If
        x = x + 1
    Next Cnt

    Application.Calculation = xlCalculationAutomatic

End Sub

如果有这个帮助,请告诉我。

此致