ScreenUpdating = False在Excel 2013和2016中失败

Wes*_*n E 6 excel vba excel-vba

我多年前开发并在Excel 2007和2010中运行良好的长期,高端的基于Excel的应用程序看起来像Excel 2013和2016中的业余小时,因为Application.ScreenUpdating = False不再可靠地工作.

当VBA代码将预先格式化的工作表从宏工作簿复制到新工作簿时,屏幕显然会解冻,尽管其他情况也必须触发它.

我已经看到了关于这个主题的线程,建议"摆弄代码"或"调用子程序中的代码".不幸的是,我必须维护数百个Excel应用程序,每个应用程序包含数千行代码和数百个即将迁移到Office 2016的用户,因此重写不是一种选择.我怎样才能恢复Excel以前的优雅?

Wes*_*n E 1

这是一种有助于减少闪烁并保留 StatusBar 消息的技术。

Application.Cursor = xlWait
Application.ScreenUpdating = False
. . .
Set wkbNewBook = Workbooks.Add
ThisWorkbook.Windows(1).Visible = False
. . .
ThisWorkbook.Windows(1).Visible = True
wkbNewBook.Activate
Application.ScreenUpdating = True
Application.Cursor = xlDefault
Run Code Online (Sandbox Code Playgroud)