每個人。在Excel工作簿中有一個大型VBA模塊,它從一堆其他遠程工作簿中獲取數據並將其複製到當前工作簿中。然後,它格式化和分析數據。所有這些工作都很好,除了可能需要一段時間,因爲我正在處理兩個工作表中的超過30,000行數據(並且每天都在增長)。Excel VBA正在跳過特定行代碼
所以,我試圖讓它把進度作爲一個百分比放在「管理員」工作表上的某個單元格中。這似乎也行得通,但有時只是。在執行期間,Excel似乎隨機跳過了更新進度的.Value
代碼行。有時候,它會更新大約四分之三的時間,有時甚至更新,直到執行結束。有誰知道爲什麼?以下是相關代碼的摘要。
<some code that declares variables and whatnot>
ThisWorkbook.Worksheets("Admin").Range("H18").Value = "Waiting..."
For Each rw In rng.Rows
<code that does the data-gathering and analysis>
progress = <code that returns a Double value>
ThisWorkbook.Worksheets("Admin").Range("H18").Value = progress & "% complete."
Next rw
ThisWorkbook.Worksheets("Admin").Range("H18").Value = "Done!"
<some cleanup code>
有時,「等待...」從不顯示。其他時候,它是。 「搞定!」幾乎總是在執行結束時顯示,但Admin!H18不會更新許多循環,並且在跳過時它不會更新同一組循環。計算仍在進行中(我認爲),因爲當它更新時,它會更新到正確的值。但是它並沒有在每個循環中更新單元,只是其中的一部分。
Tim對狀態欄的評論是顯示定期發生進度的好主意。這裏是一個簡短的狀態欄片段的鏈接 - 更新我經常使用的VBA:http://stackoverflow.com/questions/22847329/hiding-worksheet-while-copying-and-pasting/22847823#22847823 –
Tim,你的狀態欄建議完美運作。謝謝!我還會考慮將進度更新分解爲另一個子程序,但由於我的代碼比我提出的要複雜得多,因此需要考慮一些問題。我想將您的評論標記爲問題的答案,但我不能,因爲您已將其發表評論。 – T6J2E5
將我的評論轉換爲答案... –