遍历所有工作表,分别查找每个选项卡中最底部的数据行

时间:2016-01-29 15:45:03

标签: excel vba excel-vba

我发现这个很酷的代码可以识别工作表中最底层的数据行(考虑所有列),然后在下一行的B列中键入一个X.

但是,我没有成功使用此代码创建循环,因此每个工作表都被唯一地处理。我尝试在所有工作表的同一单元格中键入X,但不是每个工作表都单独基于它自己的数据集。 另请注意,我的每个选项卡都不会总是具有相同的列,这就是为什么我需要一个代码来查看所有列以找到最底部的行。

有人可以建议我如何循环这个并确定每个工作表中最底部的行吗?

Sub EndofData()

Dim iRow As Long
Dim iCol As Long

iRow = Cells.Find(What:=”*”, _
After:=Range(“A1”), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row

Cells(iRow + 1, 2).Select
ActiveCell.FormulaR1C1 = “x”

End Sub

1 个答案:

答案 0 :(得分:8)

你想做一个For Each Loop:

Sub EndofData()
Dim ws As Worksheet
Dim iRow As range
Dim iCol As Long

For Each ws In ActiveWorkbook.Worksheets

   set iRow = ws.Cells.Find(What:=" * ", _
    After:=ws.Range("A1"), _
    LookAt:=xlPart, _
    LookIn:=xlFormulas, _
    SearchOrder:=xlByRows, _
    SearchDirection:=xlPrevious, _
    MatchCase:=False)

    If not irow is nothing then        
        ws.Cells(iRow.Row + 1, 2).FormulaR1C1 = "x"
    Else 
        ws.Cells(1, 2).FormulaR1C1 = "x"
    End IF
Next ws

End Sub

感谢@Darren提供有关避免错误的帮助。