屏幕更新和加载在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,并且表单仍然更新。