【发布时间】:2020-03-05 19:49:07
【问题描述】:
我的工作簿中有 100 个工作表。在每个工作表中,第一行都有空白行。对于某些工作表,第 8 行是数据的开始位置。对于某些工作表,数据从 9 日或 10 日开始。
我的代码转到具有值的第一行,然后向上偏移一行。然后我需要它删除。
我的代码在一张工作表上工作得很好,但是当我尝试遍历工作簿中的所有工作表时,它并没有超出活动工作表。
我可以做些什么来遍历工作表?
Sub To_Delete_Rows_In_Range()
Dim iCntr
Dim rng As Range
Dim wb As Workbook
Set wb = ActiveWorkbook
For Each Ws In wb.Worksheets
Set rng = Range("A1", Range("A1").End(xlDown).Offset(-1, 0))
For iCntr = rng.Row + rng.Rows.Count - 1 To rng.Row Step -1
Rows(iCntr).EntireRow.Delete
Next
Next Ws
End Sub
【问题讨论】:
-
您需要限定您的范围:
Ws.Range("A1"...而不是Range("A1"... -
为什么要循环删除?只需删除整个范围。
-
还有
Ws.Rows(iCntr).EntireRow.Delete... -
@BigBen 我做了
rng.EntireRow.Delete它删除了我需要的内容,但是当它进入第二个循环时,它给出了一个错误。 “Range 类的删除方法失败。” -
你不应该完全摆脱第二个循环吗?