StatusBar and ScreenUpdate in Excel 2013
我刚刚进入 Excel 2013,并注意到宏的工作方式存在一些差异(因为 Microsoft 不能独善其身)。
我一直在长宏的开头使用
在 2013 年,我了解到(从 Application.Statusbar 在 Excel 2013 中未按预期工作)现在需要
我注意到的另一个问题是,在代码中使用 DoEvents 时,我似乎无法手动破坏宏(即按住 ESC 不会停止代码)。
所以有几个问题:
A) 真的需要 DoEvents 吗?
B) 有没有办法防止 ScreenUpdates 被 DoEvents 转回"on"?
C) 你如何手动中断运行 DoEvents 的代码?
如果有帮助,我可以提供我正在处理的当前宏,但由于我对一般概念更感兴趣,因此我不想提供细节让任何读者陷入困境。
提前致谢!
我今天遇到了类似的问题,所以我想我会分享我在调试问题时发现的内容:
对我来说,我注意到在我的宏运行时状态栏正在恢复到以前的状态栏方法。我发现旧消息是在禁用屏幕更新之前打印的最后一条状态栏消息。但是,新的状态栏消息正在临时打印,因此屏幕更新不会阻止新消息的显示。我将问题追溯到宏中运行可执行文件的位置:
1 2 | Set wsh = VBA.CreateObject("WScript.Shell") errorCode = wsh.Run(exeCMD, windowStyle, waitOnReturn) |
似乎调用可执行文件会中断状态栏显示,并且 excel 恢复为显示在禁用屏幕更新之前显示的任何状态栏消息。为了解决这个问题,我在运行可执行文件之前重新激活了屏幕更新,然后在运行可执行文件后禁用了屏幕更新:
1 2 3 4 | Set wsh = VBA.CreateObject("WScript.Shell") Application.ScreenUpdating = True errorCode = wsh.Run(exeCMD, windowStyle, waitOnReturn) Application.ScreenUpdating = False |
希望这对那里的人有所帮助。