Excel VBA:如何删除所有表中的空行

第一篇文章在这里,我一直试图删除在Excel 2010中使用此代码的每个工作表中的空行:

Private Sub CommandButton1_Click() Dim I As Integer 'For all sheets... For I = 1 To Sheets.Count 'select corresponding sheet Sheets(I).Select Sheets(I).Activate 'write delete code For fila = 1 To 10 If Cells(fila, 4).Value = "" Then Rows(fila).Delete End If Next fila 'Go to next sheet Next End Sub 

但似乎这个代码只会删除我的第一个活动工作表上的行。 任何想法如何使它在每个表中删除?

谢谢

总是记得在删除对象时(在你的case行中)向后循环,所以使用For i = 10 to 1 Step -1

此外,尽量避免使用SelectActivate ,而是直接引用WorksheetRange 。 在这种情况下直接使用定义为Worksheetws来查看If ws.Cells(fila, 4).Value = ""

 Option Explicit Private Sub CommandButton1_Click() Dim I As Integer, fila As Long Dim ws As Worksheet ' loop through all worksheets For Each ws In ThisWorkbook.Worksheets ' loop backwards when deleting objects For fila = 10 To 1 Step -1 If ws.Cells(fila, 4).Value = "" Then ws.Rows(fila).Delete Next fila Next ws End Sub