屏幕更新和加载在Excel中的酒吧
我正在运行很多代码来创build一些报告。
为了看看报告的创build有多远,我想在控制表上显示一个加载栏。
因此我使用条件格式在单元格中创build一个加载栏。 当一个报告(=工作表)完成计算,加载栏已达到100%(满)。
我现在的问题显示在更新这些加载栏。
运行我的代码时,会执行不同的macros。 加载条工作4-5macros,然后屏幕冻结,直到所有的macros完成。 这里的问题在哪里?
进度条的填充由另一个开启屏幕更新的macros完成,在表单上设置新的进度值并closures屏幕更新。
把DoEvents放到你的循环中,这样Excel就可以采取任何行动
把你的表单放在你的循环中,这样表单本身就会更新
我最近添加了一个Progress Indicator表单到我的一个文件。
我创build了一个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
在macros的末尾,卸载表单。 您可以将ScreenUpdating设置为False,并且表单仍然更新。