在Office 2016中屏幕闪烁运行宏

时间:2017-06-02 13:05:15

标签: excel-vba vba excel

当运行下面的代码时,屏幕闪烁得非常糟糕。这似乎只发生在Office 2016中。在Office 2010和Mac上使用Office 2016,根本没有闪烁。谁能指导我?

我已经尝试了很多变化,但似乎没有任何东西摆脱闪烁。我甚至把这个调用包裹起来,更新了虚假和真实,但没有运气。

Public Sub applyLogosToDashboard()

Application.ScreenUpdating = False

If Not Application.OperatingSystem Like "*Mac*" Then

    Sheets("Dashboard").Activate
    Sheets("Dashboard").Unprotect Password:=Sheets("Logos").Range("IV1")
    ActiveSheet.Shapes("Apple_Logo").Visible = False
    ActiveSheet.Shapes("Win_Logo").Visible = True
    ActiveSheet.Shapes("Button_Insert_Logo").Visible = True
    ActiveSheet.Shapes("Button_Print_PDF").Visible = True
    ActiveSheet.Shapes("Button_Save_As").Visible = True
    ActiveSheet.Shapes("Button_Help").Visible = True
    ActiveSheet.Shapes("Button_Versions").Visible = True
    Sheets("Logos").Protect Password:=Sheets("Dashboard").Range("IV1"), DrawingObjects:=True, Contents:=True, Scenarios:=True

Else

    Sheets("Dashboard").Activate
    Sheets("Dashboard").Unprotect Password:=Sheets("Dashboard").Range("IV1")
    ActiveSheet.Shapes("Apple_Logo").Visible = True
    ActiveSheet.Shapes("Win_Logo").Visible = False
    ActiveSheet.Shapes("Button_Insert_Logo").Visible = False
    ActiveSheet.Shapes("Button_Print_PDF").Visible = False
    ActiveSheet.Shapes("Button_Save_As").Visible = False
    Sheets("Dashboard").Protect Password:=Sheets("Dashboard").Range("IV1"), DrawingObjects:=True, Contents:=True, Scenarios:=True

End If

    Application.ScreenUpdating = True

End Sub

重要的是要注意,例程是由我的主页上的按钮执行的。在打开之后的第一次执行期间发生闪烁。如果我在没有关闭的情况下点击按钮,则没有闪烁。

2 个答案:

答案 0 :(得分:0)

我在办公室2016遇到类似的屏幕问题问题我通过禁用硬件加速解决了这个问题:

要禁用硬件加速,请按以下步骤操作: 启动任何Office程序。 上

  • 在“文件”选项卡上,单击“选项”。
  • 在“选项”对话框中,单击“高级”。
  • 在可用选项列表中,单击以选中“禁用硬件图形加速”复选框。 ...
  • 单击“确定”。

这是来自MSDN:

https://support.microsoft.com/en-gb/help/2768648/display-issues-in-office-client-applications

答案 1 :(得分:0)

我已经解决了问题,我将函数移动到启动它的sub的末尾。它现在是End Sub之前执行的最后一个函数。根本不再有任何闪烁。