2014-07-21 81 views
1

我有250.000行,我想刪除col AR中有0的所有行。這需要花費太多時間使用過濾器並只刪除可見單元格,因此我編寫了一個代碼。問題是我希望看到進展,但不添加表單,只有迭代次數就足夠了。vba excel loop_在運行時顯示迭代數(不是進度條)

有沒有辦法在運行循環時顯示迭代次數?

我的代碼是:

Sub delrow() 

Application.Calculation=xlCalculationManual 
Application.ScreenUpdating = False 

With Sheets("bners") 
LR3 = Range("A" & Rows.Count).End(xlUp).Row 
For i3 = 3 To LR3 
    a = Sheets("bners").Range("AR" & i3).Value 
    If a = 0 Then 
    Rows(i3).Delete 
    Else 
    End If 
Next i3 
End With 

Application.calculate 
Application.ScreenUpdating = True 

End Sub 

謝謝!

+0

看看調試:http://www.cpearson.com/excel/DebuggingVBA.aspx – EvenPrime

+0

你可以嘗試重新引入過濾器的代碼,即標記每一行將被刪除並在最後應用過濾器立即將它們全部移除 – Alex

+0

您可能需要仔細檢查一下,您是否必須用qoutes來解決0問題。在我的測試過程中,它刪除了空行/空行,但如果我用qoutes包圍它,那麼它實際上會跳過行,直到「0」 – mrbungle

回答

1

我喜歡在底部狀態欄的

count = 0 
    For.... 
     'your code 
     count = count + 1 
     Application.StatusBar = Count 
    next 

顯示。簡單,對我來說不重。

0

則可以將循環內補充一點:

Range("A1") = i3 

這將爲數左上角單元格設置爲當前迭代中,但它不會很順利。

+0

可能無法工作,因爲Application.ScreenUpdating設置爲false – Alex

+0

是的,謝謝。但我有另一個問題。經過1000條線需要1分鐘,因此250.000條線250分鐘,因此超過4小時。我怎樣才能更有效地做到這一點?我會發表另一個問題。 – GabyLP

+0

我會推薦你​​的問題部分 – Alex

4

使用狀態欄,它會顯示在狀態欄(杜):

Application.StatusBar = "Current iteration: " & i3 
+0

我喜歡你的例子更好地使用OPs i3 – mrbungle

+0

@mrbungle謝謝,我們希望Gaby並不意味着StatusBar,而在問題 – Alex

+1

中說「沒有進度條」,我會改變顯示當前行和總數,這樣用戶就可以知道需要多長時間。像這樣:'Application.StatusBar =「當前迭代:」&i3&「of」&LR3' – guitarthrower