2017-02-03 26 views
0

我正在运行很多代码来创建一些报告。在Excel中ScreenUpdating和加载栏

要查看创建报告的进展情况,我想在控制表中显示一个加载栏。

因此,我使用条件格式在单元格中创建加载栏。当报告(=工作表)结束计算时,加载栏已达到100%(完整)。

我现在的问题显示在更新这些加载栏。

运行我的代码时,会执行不同的宏。加载条工作4-5宏,然后屏幕冻结,直到所有的宏完成。问题在哪里?

进度条的填充由另一个宏完成,它启用屏幕更新,在表单上设置新的进度值并关闭屏幕更新。在循环

+1

[在Excel VBA中强制屏幕更新]的可能重复(http://stackoverflow.com/questions/3735378/force-a-screen-update-in-excel-vba) – User632716

回答

0

看跌的DoEvents,以便Excel“赶上”与

把.Repaint在循环您的形式,这样的形式本身更新

2

我最近增加了一个进度指示器形式向任何行动我的一个文件。

我创建了一个用户窗体,在该窗体中添加了一个框架和一个标签,还有一些其他标签,稍后我可以使用其他标签进行更新。

enter image description here

我加载用户窗体的起点,并通过已完成的%,我想上的标签,说这

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并且表单仍然更新。