此代碼使Excel無法響應。任何人都知道這可能是爲什麼?如何刪除所有空行
Sub delblank()
On Error Resume Next
ActiveSheet.UsedRange.Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
If Err Then
MsgBox "No blank cells"
End If
End Sub
此代碼使Excel無法響應。任何人都知道這可能是爲什麼?如何刪除所有空行
Sub delblank()
On Error Resume Next
ActiveSheet.UsedRange.Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
If Err Then
MsgBox "No blank cells"
End If
End Sub
嘗試是這樣的:
Public Sub Tester()
On Error Resume Next
Columns(1).SpecialCells(xlBlanks).EntireRow.Delete
On Error GoTo 0
End Sub
試試下面的代碼
Sub delblank()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim rng As Range
On Error Resume Next
Set rng = ActiveSheet.UsedRange.Range("A:A").SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If rng Is Nothing Then
MsgBox "No cells found"
Else
rng.EntireRow.Delete
End If
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
這與OP的代碼有什麼不同? –
@ Jean-FrançoisCorbett感謝您通過代碼。對我來說,這段代碼更加結構化並修復了一些問題,例如(錯誤轉到0)。按照Q,代碼使得excel「無響應」,所以代碼沒有錯誤,OP正在尋找更好的性能。我相信'Application.ScreenUpdating = False'&'Application.Calculation = xlCalculationManual'有一定的幫助。 – Santosh
的問題是,UsedRange
不會接受Range("A:A")
作爲一個屬性,因爲在您的工作表的使用範圍不不包含Excel工作表從上到下的整列,即從第1行到第1048756行。
你想,而不是什麼是指的UsedRange
第一柱:Columns(1)
這樣的替換Range("A:A")
:
ActiveSheet.UsedRange.Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
現在,它的工作原理。
如果您有很長的方法和屬性鏈給你帶來麻煩,那麼將它分解爲其組成部分以便找到錯誤的來源會更容易。這就是我所做的:
Dim r1 As Range
Dim r2 As Range
Dim r3 As Range
Dim sh As Worksheet
Set sh = ActiveSheet
Set r1 = sh.UsedRange
Set r2 = r1.Range("A:A") ' Aha, error occurs here! Wow, that was easy to find.
Set r3 = r1.SpecialCells(xlCellTypeBlanks)
r3.EntireRow.Delete
當錯誤消失,它的罰款放鏈重新結合在一起,以擺脫雜亂的。
也不要使用On Error Resume Next
除非你完全確定這是你想要的,因爲它只會吞下錯誤而不會告訴你它們來自哪裏。
你可以請通過[常見問題](http://stackoverflow.com/about)並接受所有你有問題的答案。 – Santosh