我嘗試使用下面的代碼來刪除空行:刪除Excel中的空行使用VBA
worksheet.Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
上面的代碼工作正常,但給人run time error '1004': No Cells were found.
我嘗試使用下面的代碼來刪除空行:刪除Excel中的空行使用VBA
worksheet.Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
上面的代碼工作正常,但給人run time error '1004': No Cells were found.
On Error Resume Next
worksheet.Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
On Error GoTo 0
任何意義的時候有沒有空單元格的錯誤處理幫助。如果沒有像這樣的單元格,則SpecialCells(xlCellTypeBlanks)
將始終返回錯誤,因此如果要使用SpecialCells(xlCellTypeBlanks)
,錯誤處理是處理它的唯一方法(我知道)。
做工精細和我在一起。這些語句不拋出任何錯誤我
Sheet1.Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete 'perfect
我發現你的問題
On Error Resume Next
Sheet1.Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
On Error GoTo 0
這些類型的解決方案在這些鏈接看看
http://www.mrexcel.com/forum/showthread.php?t=343744
以及是的喲你設定了你的目標?工作表並不在這裏做
+1的錯誤處理建議。我同意「工作表」不是最好的變量名稱。 – brettdj
您需要測試是否有空白。
If WorksheetFunction.CountBlank(Worksheet.Columns("A:A")) > 0 Then
Worksheet.Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
你可以使用上的錯誤繼續下一步如果沒有空白的行跳過,但它通常最好測試特定的條件,而不是假設你知道錯誤是什麼。
就我所見,如果列A中的每個單元格都有值,則只會顯示「找不到單元格」消息。
編輯:基於@ brettdj的評論,下面是一個仍然使用COUNTBLANK一種替代方案:
If WorksheetFunction.CountBlank(Intersect(worksheet.UsedRange, ws.Columns("A:A"))) > 0 Then
worksheet.Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
當然UsedRange的是出了名的善變和可能大於它出現。我認爲這是最好先確定實際的範圍,其中行是被刪除,然後檢查SpecialCells在這個範圍內,例如:
Sub DeleteRows()
Dim ws As Excel.Worksheet
Dim LastRow As Long
Set ws = ActiveSheet
LastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
With ws.Range("A2:A" & LastRow)
If WorksheetFunction.CountBlank(.Cells) > 0 Then
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
End With
End Sub
最後一個音符 - 我的「工作」到「WS改變變量「as」工作表「是一個Excel保留字。
另一種方式:
If Range("Table2").Rows.Count > 1 Then
Range("Table2").EntireRow.Delete
End If
Sub delete_rows_blank()
t = 1
lastrow = ActiveSheet.UsedRange.Rows.Count
Do Until t = lastrow
If Cells(t, "A") = "" Then
Rows(t).Delete
End If
t = t + 1
Loop
End Sub
考慮添加更多來解釋代碼在做什麼。 – gms0ulman
對不起 - 宏只是通過列「A」循環爲空單元格,如果是,則刪除行。 (您可以調整拉斯特羅或列字母以符合您的需求)。希望這可以幫助 ! :) –
+1有效答案 – brettdj
解釋這些額外的行準確會有多大幫助:-) – Enissay