无法将Application.ScreenUpdating设置为false

时间:2016-08-11 12:11:35

标签: excel vba excel-vba

我有一些VBA代码如下:

Sub copyData(fromRange as Range, toRange as Range)
 Application.ScreenUpdating = False

 <copy paste code here>

 Application.ScreenUpdating = True
End Sub

即使我将Application.ScreenUpdating设置为False,它仍然为True。我已使用F8验证了这一点并将鼠标悬停在Application.ScreenUpdating上(显示为True)。

我的复制粘贴代码有效。它切换工作表,但由于ScreenUpdating保持为True,我可以看到屏幕闪烁。

有没有办法将Application.ScreenUpdating设置为False?

P.S。我在这个论坛上看到了类似的问题,但没有具体的解决方案。

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:0)

尝试使用此代码,并在立即窗口Ctrl + G中查看每个代码的值:

Sub copyData()

Dim r As Boolean
r = Application.ScreenUpdating = False
Debug.Print "'Application.ScreenUpdating' is set to " & r

r = Application.ScreenUpdating = True
Debug.Print "'Application.ScreenUpdating' is set to " & r

End Sub

答案 1 :(得分:0)

我遇到相同问题已经有一段时间了,而且我发现了一些问题:Application.screenUpdating仅在宏运行了多长时间后才保持FALSE。当任何宏运行停止时,它变为True。您可以尝试以下方法:

Sub testApplicationScreenUpdating()
    Application.ScreenUpdating = False
    Debug.Print "Application screen updating is:" & Application.ScreenUpdating
    Application.ScreenUpdating = True
End Sub
  • 如果仅运行此命令,它将在立即窗口中返回:“应用程序屏幕更新为:错误”
  • 如果逐步运行它,并用鼠标悬停在Applicaiton.ScreenUpdating上,即使“立即”窗口将显示“ False”,它也会显示为“ True”。
  • 如果最后将[Application.ScreenUpdating = True]注释掉,然后分别运行[Debug.Print“应用程序屏幕更新为:”&Application.ScreenUpdating],即使不是,也将返回true。切换为true。

答案 2 :(得分:0)

我将Excel用作Microsoft 365的一部分。我也为屏幕闪烁问题而奋斗。尽管我的宏起作用了,但闪烁却很烦人。我尝试了几种方法,但偶然发现了这一点:

在从第一个工作簿启动宏之前,最小化第二个工作簿。对于我来说,屏幕不再闪烁。我还尝试了以下代码,以最小化VBA中的第二个工作簿。如果第二个工作簿已经最小化,则没有任何效果。如果第二个工作簿没有最小化,则屏幕仅闪烁一次-使我能够最小化第二个工作簿。随后在工作簿之间来回切换不会引起任何屏幕闪烁。

Filename = "SecondWorkbookName.xlsx"

Windows(Filename).Activate

Application.WindowState = xlMinimized      ' Minimize workbook to prevent flickering.

Application.ScreenUpdating = False