每个人。在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
将我的评论转换为答案... –