首页 > 解决方案 > 重新打开 ScreenUpdating 时有没有办法防止屏幕闪烁?

问题描述

目前我正在构建一个生产仪表板,其中包括一个“深色主题”选项,其中设计将更改为深色主题。当执行此操作的宏(约 1700 行,受影响的大约 250 个形状)有一段时间没有被触发时,屏幕会在一个实例中发生变化。连续多次触发时,会出现一个可见的“过程”,即形状变为深色主题(宏仍在 <1 秒内完成)。有没有办法防止这种情况?

我已经尝试过的选项:

代码:

主开关:

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
        
        ...

标签: excelvba

解决方案


推荐阅读