excel - 重新打开 ScreenUpdating 时有没有办法防止屏幕闪烁?
问题描述
目前我正在构建一个生产仪表板,其中包括一个“深色主题”选项,其中设计将更改为深色主题。当执行此操作的宏(约 1700 行,受影响的大约 250 个形状)有一段时间没有被触发时,屏幕会在一个实例中发生变化。连续多次触发时,会出现一个可见的“过程”,即形状变为深色主题(宏仍在 <1 秒内完成)。有没有办法防止这种情况?
我已经尝试过的选项:
- 在两者之间保存工作簿(使宏不必要地变慢)
- DoEvents(似乎没有效果)
代码:
主开关:
Sub EnableDarkTheme()
Application.ScreenUpdating = False
Application.EnableEvents = False
MenuOptions.Range("B11").Value = "On"
Call EnableDarkThemeBasicInAllSheets
Call EnableDarkThemeInFrontpage
Call EnableDarkThemeInDashboard
Call EnableDarkThemeInWegdiagramme
Call EnableDarkThemeInAliasstruktur
Call SetDarkThemeSettings("On", MenuOptions.Range("B2").Value)
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
来自被调用的 Subs 的示例(针对必须在目标工作表中更改的每个 Shape 完成):
With Frontpage
With .Shapes.Range(Array("Background_Basic_Functions"))
.Fill.ForeColor.ObjectThemeColor = msoThemeColorText1
.Fill.ForeColor.Brightness = 0.25
With .TextFrame2.TextRange.Font.Fill
.ForeColor.RGB = RGB(256, 256, 256)
End With
End With
...
解决方案
推荐阅读
- react-native - 即使应用程序处于后台或关闭状态,如何使用 react-native 应用程序?
- elasticsearch - ElasticSearch:如何根据字段中的位置对匹配项进行排序
- ios - 是否可以从 iOS 上的 inappbrowser/webview 访问相机
- php - ftp_nlist() 有时不返回路径
- javascript - 当输入字段中的文本发生更改时,我应该使用什么用户输入来触发功能?
- intellij-idea - Intellij 保存多个实例的工作区设置
- javascript - 使用 ajax 在 Bootstrap 模式中加载表单结果
- python - 用python提取复杂链接
- excel - 如果更改,VBA 我的宏会复制 if 语句的结果
- c# - Unity C# - 自定义 #if 预处理器宏