我正在运行大量代码来创建一些报告。
为了查看报表的创建进度,我想在我的控制表上显示一个加载栏。
因此,我使用条件格式在单元格中创建一个加载栏。当报表(=工作表)计算完成时,加载条已达到100% (满)。
我现在在更新这些加载栏时遇到的问题。
在运行我的代码时,会执行不同的宏。加载栏可以工作4-5个宏,之后屏幕会冻结,直到所有的宏都完成。这里的问题在哪里?
进度条的填充是由另一个宏完成的,该宏打开屏幕更新,在工作表上设置新的进度值,并关闭屏幕更新。
发布于 2017-02-03 21:21:19
把DoEvents放在你的循环中,这样Excel就能“赶上”任何动作
将.Repaint放在表单的循环中,这样表单本身就会更新
发布于 2017-02-03 21:31:35
我最近在我的一个文件中添加了一个进度指示器表单。
我创建了一个UserForm,添加了一个框架,并在该框架内添加了一个标签,以及其他几个标签,我可以在以后使用具体内容更新这些标签。

我在开始时加载用户表单,并传递已完成的%和我希望标签对此表示的内容
Public Sub ProgressUpdate(ByVal dCalc As Double, ByVal Process As String)
With ProgIndi
If .Visible Then
.Process.Caption = Process & "..."
.PercentCompleted.Caption = Int(dCalc * 100) & "% Completed."
.Bar.Width = dCalc * 200
DoEvents
End If
End With
End Sub在宏末尾,卸载表单。您可以将ScreenUpdating保留为False,表单仍会更新。
https://stackoverflow.com/questions/42025221
复制相似问题