如何在我当前正在遍历的列中找到最后一行

时间:2018-08-03 15:40:31

标签: vba excel-vba

c指定了我要遍历的列,“样式”是应用于空白单元格的突出显示。如果该单元格为空,则需要将该行(Cells(i,4))的ID复制到我当前正在遍历的列c的报告页面中。为了提高可读性,我试图将每个实例复制到该行的下一个可用单元格中,但是可以想象,在代码的Range(c & Rows.Count)部分出现了错误。

我知道我可以在其中放置A或任何其他列字母,但是我只是想知道我是否能够在其中放置要迭代的变量。有什么提示吗?

For c = 1 To 103
    For i = 1 To coor(2)
        If Cells(i, c).Style = "60% - Accent2" Then
            Cells(i, 4).Copy Sheets("ReportsPage").Range(c & Rows.Count).End(xlUp).Offset(1, 0)
        End If
    Next i
Next c

2 个答案:

答案 0 :(得分:2)

使用Cells()代替Range()Cells()允许使用基本位置:

For c = 1 To 103
    For i = 1 To coor(2)
        If Cells(i, c).Style = "60% - Accent2" Then
            Cells(i, 4).Copy Sheets("ReportsPage").Cells(Rows.Count,c).End(xlUp).Offset(1, 0)
        End If
    Next i
Next c

需要注意的一点是,即使是活动表,也应始终将任何范围对象附加到其父表:

With ActiveSheet
    For c = 1 To 103
        For i = 1 To coor(2)
            If .Cells(i, c).Style = "60% - Accent2" Then
                .Cells(i, 4).Copy Sheets("ReportsPage").Cells(Rows.Count,c).End(xlUp).Offset(1, 0)
            End If
        Next i
    Next c
End With

答案 1 :(得分:0)

您可以使用它来查找最后一列:

Dim LastCol As Integer
With ActiveSheet
    LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
End With