2016-12-27 175 views
0

的第一篇文章在這裏,我一直在嘗試使用Excel 2010中的代碼在每一個表中刪除空行:Excel的VBA:如何在所有工作表中刪除空行

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 

但似乎這個代碼僅刪除我的第一個活動工作表上的行。任何想法如何使它在每張表中刪除?

感謝

+0

你最大的問題是,你需要遞減'1每一個行被刪除,否則時間fila'你將跳過行。我還會在外循環的開始處放置一個斷點,並查看「Sheets」集合中的內容以確定計數。 –

回答

1

永遠記住循環落後刪除對象(在你的情況行)時,所以使用For i = 10 to 1 Step -1

此外,儘量避免使用SelectActivate,而不是直接引用WorksheetRange。在這種情況下使用直接ws定義爲Worksheet,看是否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 
+0

愛你!謝謝! – Frapu

+0

@Frapu歡迎您,請點擊答案旁邊的V標記爲答案 –

相關問題