【发布时间】:2017-12-27 19:30:30
【问题描述】:
我有一个非常大的电子表格,目前有 129 个标签。简而言之,下面的宏消除了每个工作表的所有数组公式错误(#NUM)。这大约需要 15-20 分钟,但我想知道宏距离完成有多近。
我设计了一个没有问题的用户窗体进度条,并且我的代码正确引用了宏。除了更新用户窗体中的实际标签的部分外,一切正常。如何添加代码来定义宏的完成百分比是多少?我假设我需要使用“当前已完成的工作表/总工作表”,但我对 Userforms 非常陌生。
Sub DelNUM()
Dim LR As Long
Dim i As Long
Dim sh As Worksheet
For Each sh In Worksheets
LR = sh.Range("B" & sh.Rows.Count).End(xlUp).Row
For i = LR To 1 Step -1
If IsError(sh.Range("B" & i)) Then sh.Rows(i).Delete
Next i
Next
End Sub
我已经查看了以下链接,但它适用于比我更有经验的人,所以我在关注它时遇到了麻烦:https://support.microsoft.com/en-us/help/211736/how-to-display-a-progress-bar-with-a-user-form-in-excel
我们将不胜感激。
谢谢,
肖恩
【问题讨论】:
-
您需要在表单更新进度的地方使用
Me.Repaint。您可以在If声明之后立即尝试UserForm1.Repaint,但我不确定这是否会更新它 -
等待 - 运行需要 20 分钟?我知道您有很多工作表,但可能有更快的方法...也许过滤掉范围,删除剩下的那些行?如果可行的话,也许把它交给CodeReview。添加百分比条是次要的,IMO,为了提高效率而进行调整。正如您所注意到的,目前逐个单元格将需要很长时间。