在切换application.screenupdating时打开Excel表格更新单元格

时间:2015-11-12 21:25:04

标签: excel vba excel-vba excel-2013

这是一个小问题,我正在通过日志文件阅读并通过将数据写入多个工作表来准备数据。我不想看到所有这些写作都在继续,所以我关闭了屏幕更新,但是我希望看到一些进展,所以我不时地切换屏幕更新我激活顶部工作表,在一些写入一些进度数据单元格和开关屏幕再次更新。这在Excel 2010中运行良好,但上周我升级到Excel 2013,在宏完成之前不再可见更新。我添加了0.3秒的暂停,但现在只有时间得到更新,而不是已处理网站的数量。有什么想法吗?

Application.ScreenUpdating = True  'To write the elapsed time and the number of found sites on the performance monitor sheet
PerfMon.Activate
PerfMon.Range("B4") = Now - StartPoint
PerfMon.Range("D4") = SiteCnt
Application.Wait (Now + (0.3 / 86400))
Application.ScreenUpdating = False

谢谢,汉斯

1 个答案:

答案 0 :(得分:1)

最佳解决方案似乎是启用状态栏。如果不确切知道你的宏是什么,我建议你将工作簿中的一个变量设置为整数,并跟踪状态栏中的当前进度。也许这是“Now - StartPoint”或“SiteCnt”,否则您可以定期使用新文本更新状态栏。

如果你选择整数选项,这是一个例子:

[...]
 Application.ScreenUpdating = False
 Application.DisplayStatusBar = True
 Application.StatusBar = "Reading log files"
 [...]
 Application.StatusBar = "Preparing data"
 [...]
 Application.StatusBar = "Formatting data"
 [...]
 Application.StatusBar = ""
 Application.DisplayStatusBar = False
[...]   

如果你选择文本选项,这是一个例子:

pause