【问题标题】:ScreenUpdating and loading bar in excelexcel中的屏幕更新和加载栏
【发布时间】:2017-02-03 13:15:25
【问题描述】:

我正在运行大量代码来创建一些报告。

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

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

我现在在更新这些加载栏时遇到的问题。

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

进度条的填充由另一个宏完成,该宏打开屏幕更新,在工作表上设置新的进度值并关闭屏幕更新。

【问题讨论】:

标签: vba excel


【解决方案1】:

我最近在我的一个文件中添加了进度指示器表单。

我创建了一个用户窗体,添加了一个框架,在该框架内添加了一个标签,以及一些其他的标签,我可以稍后更新它们的细节。

我在开始时加载用户表单,并将已完成的 % 以及我希望标签说的内容传递给此

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,表单仍会更新。

【讨论】:

    【解决方案2】:

    将 DoEvents 放入循环中,以便 Excel “赶上”任何操作

    将 .Repaint 放入表单的循环中,以便表单本身更新

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      • 2015-12-04
      • 1970-01-01
      • 2014-12-25
      相关资源
      最近更新 更多