我有一些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。我在这个论坛上看到了类似的问题,但没有具体的解决方案。
任何帮助将不胜感激!
答案 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
答案 2 :(得分:0)
我将Excel用作Microsoft 365的一部分。我也为屏幕闪烁问题而奋斗。尽管我的宏起作用了,但闪烁却很烦人。我尝试了几种方法,但偶然发现了这一点:
在从第一个工作簿启动宏之前,最小化第二个工作簿。对于我来说,屏幕不再闪烁。我还尝试了以下代码,以最小化VBA中的第二个工作簿。如果第二个工作簿已经最小化,则没有任何效果。如果第二个工作簿没有最小化,则屏幕仅闪烁一次-使我能够最小化第二个工作簿。随后在工作簿之间来回切换不会引起任何屏幕闪烁。
‘
Filename = "SecondWorkbookName.xlsx"
Windows(Filename).Activate
Application.WindowState = xlMinimized ' Minimize workbook to prevent flickering.
Application.ScreenUpdating = False