如何在表格中添加行和替代行颜色?

时间:2018-08-27 13:20:16

标签: excel-vba

我想在表格末尾添加一行,并自动替换行的颜色。我这里有代码,但行未添加到表中,而是添加到了活动表中。我不知道如何正确遍历表中的行。

Private Sub CommandButton2_Click()

    Dim lr As Long
    lr = Cells(Rows.Count, 1).End(xlUp).row

    Rows(lr + 1).Insert

    Dim lrow As Excel.ListRow
    Dim tbl As ListObject
    Set tbl = ActiveSheet.ListObjects("WorkZone")

    For Each lrow In tbl.ListRows

        If Cells.Interior.Color = RGB(0, 0, 0) And Cells.row Mod 2 = 0 Then

            Cells.Interior.Color = RGB(242, 242, 242)

        End If

    Next lrow

End Sub

2 个答案:

答案 0 :(得分:2)

我建议不要在For Each循环上循环,因为在索引上看到要更新的行更为明显。

通过仅指定 .Cells,即可指定工作表中的所有单元格!为了解决这个问题,我通常建议将其更改为.cells( <row>, <column> ).Interior ...,但是由于您实际上只查看表中的一行,因此可以使用ListObects.ListRows( <row> )来访问表中的某些行。

我还更改了将行添加到表末尾的方式,因为对我来说,使用内置的ListRows.Add函数更有意义,因为像上面一样,您实际上只是想访问表而不是整个表。

Private Sub CommandButton2_Click()

    Dim tbl As ListObject
    Set tbl = ActiveSheet.ListObjects("WorkZone")

    tbl.ListRows.Add (tbl.ListRows.count + 1)

    Dim i As Long
    For i = 1 To tbl.ListRows.count
        With tbl.ListRows(i).Range
            If i Mod 2 <> 0 Then
                .Interior.color = RGB(242, 242, 242)
            End If
        End With
    Next i

End Sub

答案 1 :(得分:2)

Sub AlternateRows()
    Dim lst As ListObject, lstRow As ListRow
    Set lst = Sheets("Sheet1").ListObjects("Table1")
    lst.ListRows.Add '//Add row
    For Each lstRow In lst.ListRows
        lstRow.Range.Interior.Color = _
            IIf(lstRow.Index Mod 2 = 0, vbRed, vbGreen) '//Color rows
    Next
End Sub