Excel For循环每隔5行格式化单元格

Excel For循环每隔5行格式化单元格,excel,vba,Excel,Vba,我正在尝试格式化一个增长表。假设表有20行,我希望前5行和之后每隔5行,所以1-5,11-15是某种颜色。我试图用for循环来实现这一点 b = 0 For i = 1 To lRow a = i - (5 * (i \ 5)) c = b - (2 * (b \ 2)) If c = 0 Then If a = 0 Then DSws.Range("A" & i - 3, "H" & i). _

我正在尝试格式化一个增长表。假设表有20行,我希望前5行和之后每隔5行,所以1-5,11-15是某种颜色。我试图用for循环来实现这一点

b = 0
For i = 1 To lRow
    a = i - (5 * (i \ 5))
    c = b - (2 * (b \ 2))
    If c = 0 Then
        If a = 0 Then
            DSws.Range("A" & i - 3, "H" & i). _
            Interior.Color = RGB(141, 180, 227)
            b = b + 1
            MsgBox b
        End If
    End If

Next I
lRow确定最后一行,因此设置循环的范围

之后,我使用两个mod函数,第一个用来确定它是一个5的间隔,第二个用来确定迭代是偶数还是奇数(以实现其他5个效果)


当我运行这段代码时,只突出显示前5个

我真的不知道代码的其余部分打算完成什么,但这次重写简化了循环,使A:H列中的5行带交替着色

For i = 1 To lRow step 10
    DSws.cells(i, "A").resize(5, 8).Interior.Color = RGB(141, 180, 227)
Next i

我不是100%清楚你想要什么,但听起来你想要交替的颜色(例如,对于旧的点阵打印机用户,绿色条效果),每五行交替颜色

如果是这种情况,下面的小修改可能会为您做到这一点:

  Dim lrow, i, switch As Integer
  Dim DSws As Worksheet
  Dim col1, col2 As Long

  Set DSws = ActiveWorkbook.ActiveSheet
  switch = 0
  lrow = ???  ' assuming you have a way of defining this

  col1 = RGB(141, 180, 227)  ' Pick a color
  col2 = RGB(0, 180, 227)    ' Pick another color

  For i = 1 To lrow

    If i Mod 5 = 1 Then
      switch = switch + 1
    End If

    If switch Mod 2 = 0 Then
      DSws.Range("A" & i, "H" & i).Interior.Color = col1
    Else
      DSws.Range("A" & i, "H" & i).Interior.Color = col2
    End If

  Next i

你是说1-5,11-15,对吗?谢谢这很有效!我只需要稍微调整一下,但要点是一样的