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

Fai*_*ell 1 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
Run Code Online (Sandbox Code Playgroud)

Sco*_*ner 8

你想做一个For Each循环:

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
Run Code Online (Sandbox Code Playgroud)

感谢@Darren在错误避免方面的帮助.