我正在努力使用Excel中的Visual Basic来完全删除工作表中除前六行之外的所有行。 这里我说明了与命令按钮相关的代码:
Dim i As Integer
Dim tot_rows As Integer
tot_rows = ThisWorkbook.Sheets("NAME").UsedRange.Rows.Count
With Worksheets("NAME")
For i = tot_rows To 6 Step -1
.Rows(i).ClearContents
.Rows(i).EntireRow.Delete
Next i
当我执行代码时,它没有删除任何一行,你能告诉我为什么吗? tot_rows总是等于401(在表格中我可以看到401行,所以我认为它是正确的)。 可能超过401行,我无法直观地看到它?
感谢您的帮助,我感谢
答案 0 :(得分:0)
.UsedRange可以松鼠;特别是当您的数据不在从第1行扩展的连续块中时。
dim lr as long, lc as long
with worksheets("sheet1")
lr = .cells.Find(What:="*", After:=.Cells(1), LookIn:=xlFormulas, LookAt:=xlWhole, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row
lc = .cells.Find(What:="*", After:=.Cells(1), LookIn:=xlFormulas, LookAt:=xlWhole, _
SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).column
.range(.cells(7, 1), .cells(lr, lc)).clear
end with
如果您要“删除”所有行,则只需将其清除为块。没有循环;没有删除。
出于所有意图和目的,没有理由认为这不会做你正在尝试的事情。
with worksheets("sheet1")
.range(.cells(7, 1), .cells(.rows.count, .columns.count)).clear
end with