我正在运行大量代码来创建一些报告。
要查看报告创建的进度,我想在控制表上显示一个加载栏。
因此,我使用条件格式在单元格中创建加载栏。当报告(=工作表)完成计算时,加载条已达到100%(完整)。
我现在遇到的问题是更新这些加载条。
运行我的代码时,会执行不同的宏。加载条适用于4-5个宏,之后屏幕冻结,直到所有宏完成。这里的问题在哪里?
进度条的填充由另一个宏打开,该宏打开屏幕更新,在工作表上设置新的进度值并关闭屏幕更新。
答案 0 :(得分:2)
我最近在其中一个文件中添加了进度指示器表单。
我创建了一个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,表单仍然会更新。
答案 1 :(得分:0)
将DoEvents放入循环中,以便Excel“抓住”任何操作
将.Repaint放入你的表单循环中,以便表单本身更新