我发现这个很酷的代码可以识别工作表中最底层的数据行(考虑所有列),然后在下一行的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
答案 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提供有关避免错误的帮助。