Application.StatusBar在VBA中冻结

时间:2014-03-24 09:38:59

标签: excel excel-vba vba

最近我一直在编写需要大量时间执行的宏。 (超过5分钟,但有些显着更长)。我发现在这种情况下(除等待之外)有用的一件事就是让Application.StatusBar告诉我它是移动还是挂起。

但是,很多时候,当程序继续前进时,Application.Statusbar会冻结某个值。怎么能纠正这个?反正我们可以阻止这个,这样只要程序移动,状态栏就会继续移动吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

我发现当我在循环中有很多项目时冻结发生在我的代码中。我通过使用以下代码解决了这个问题:

For RowNum = 1 To TotalRows
  For ColNum = 1 To TotalCols
    'code
      If ColNum = 1 Then
        If RowNum Mod 50 = 0 And ColNum = 1 Then
          Application.StatusBar = Format(RowNum / TotalRows, "0%")& " Completed." 
        End If
      Else: Exit For
      End If
  Next ColNum
Next RowNum

循环每50行更新一次状态栏。这有助于代码运行更快,并消除屏幕冻结