Vba-Excel循环删除表格的最后一行

我想学习一点VBA。 所以我是新来的。

我想要一个从第二张到最后一张的循环,然后删除表格中单个表格的最后一行。

目前我有这个代码,我在网上search。

Sub ApagaLoop() 'Apaga todas as linhas das tabelas, e percorre todas as folhas. Dim WS_Count As Integer Dim I As Integer Dim sht As Worksheet Dim LastRow As Long ' Set WS_Count equal to the number of worksheets in the active ' workbook. WS_Count = 7 ' Begin the loop. For I = 2 To WS_Count ' Insert your code here. Sheets(I).Cells(Rows.Count, 1).End(xlUp).Rows().Select Rows(ActiveCell.Row).Select Selection.Delete Shift:=xlUp ' The following line shows how to reference a sheet within ' the loop by displaying the worksheet name in a dialog box. MsgBox ActiveWorkbook.Worksheets(I).Name Next I End Sub 

而我在以下错误:

 Sheets(I).Cells(Rows.Count, 1).End(xlUp).Row 

有人能告诉我我在做什么错吗? 非常感谢

很可能你的ActiveWorkbookless于7工作表

所以只是改变

 WS_Count = 7 

 WS_Count = ActiveWorkbook.Worksheets.Count 

此外,您可以避免Select / Selection并使用全Range参考,如下所示:

 Option Explicit Sub ApagaLoop() 'Apaga todas as linhas das tabelas, e percorre todas as folhas. Dim WS_Count As Integer Dim I As Integer ' Set WS_Count equal to the number of worksheets in the active ' workbook. WS_Count = ActiveWorkbook.Worksheets.Count ' Begin the loop. For I = 2 To WS_Count ' deletes the last line of current worksheet Worksheets(I).Cells(Rows.Count, 1).End(xlUp).EntireRow.Delete Shift:=xlUp ' The following line shows how to reference a sheet within ' the loop by displaying the worksheet name in a dialog box. MsgBox ActiveWorkbook.Worksheets(I).Name Next I End Sub 

这里是使用For Each ws In Worksheets另一种方法For Each ws In Worksheets中引用工作表和.Find引用工作表上的最后一行,而不pipe它在哪个列。

 Sub ApagaLoop() Dim ws As Worksheet Dim Target As Range For Each ws In Worksheets If ws.Index <> 1 Then Set Target = ws.Cells.Find(What:="*", After:=ws.Range("A1"), SearchDirection:=xlPrevious) If Not Target Is Nothing Then If MsgBox("Do you want to delete " & Target.EntireRow.Address(External:=True), vbYesNo, "Delete Last Row") = vbYes Then Target.EntireRow.Delete End If End If End If Next End Sub