excel – VBA ScreenUpdate和效率

我已经创建了一个“驱动程序”电子表格,用于控制(打开和运行等)其他工作簿上的宏.我努力提高效率,因为我正在使用的文件非常大,无法进一步更改.我已经读过将应用程序屏幕更新设置为false有帮助.我已将驱动程序电子表格屏幕更新设置为false up(然后在整个过程完成后再返回true).但是,当我运行驱动程序宏时,屏幕会定期更新(看起来它在打开另一个子/宏/工作表时会更新屏幕).驱动程序打开的其他子/宏/工作簿在启动时也会将屏幕更新设置为false,并在结束时返回true.

对于除驱动程序之外的所有其他工作簿,我可以将屏幕更新设置为false(并且在完成时不会还原为true)吗?我一直在读,我必须总是回归真实…所以它让我担心.

最佳答案 只是分享,我使用的方法是这样的:

Sub passiveRoutine()

Dim ScrnMode as Boolean

With Application
  ScrnMode = .Screenupdating
  If ScrnMode then .Screenupdating = False
End with

Do stuff


If ScrnMode then Application.Screenupdating = True
End Sub

Sub activeRoutine()

Dim ScrnMode as Boolean

With Application
  ScrnMode = .Screenupdating
  If Not ScrnMode then .Screenupdating = True
End with

Do stuff


If Not ScrnMode then Application.Screenupdating = False
End Sub

这个想法是为了避免任何不必要的切换,因为有时它使用更多的时间来切换模式,而不是通过关闭它来节省,并且它往往会减少屏幕的闪烁.

点赞