在Excel 2010中描述的方法,ScreenUpdating正常工作。但在2007年,它没有翻转,工作表操作在视觉上被看到。
Dim scrup As Boolean: scrup = DisableScreenUpdating(Application.ScreenUpdating)
Function DisableScreenUpdating(val As Boolean) As Boolean
'''''''''''''''''''''''''''''''''''''''''''''''''
' Disable ScreenUpdating, for seemless operation
If val Then
Application.ScreenUpdating = False
End If
'''''''''''''''''''''''''''''''''''''''''''''''''
DisableScreenUpdating = val
End Function
我在2007年缺少2010年假设或正常工作的内容?
True
更改为False
。答案 0 :(得分:1)
您可以尝试删除条件并查看问题是否仍然存在。这就是你知道它是否与有条件或无条件或'val'有关的方式。
Function DisableScreenUpdating() As Boolean
Application.ScreenUpdating = False
DisableScreenUpdating = True
End Function
假设这会让你的错误消失,我会专注于通话......
DisableScreenUpdating(Application.ScreenUpdating)
也许这个错误与阅读ScreenUpdating属性有关,紧接着就是写。这只是一个猜测。
另外,我会在您的项目中搜索Application.ScreenUpdating的任何其他用法。可能还有一些其他代码导致更新返回True。
答案 1 :(得分:0)
首先,是否有启用ScreenUpdating的功能?您的代码仅禁用它。以下是使用我使用的代码修改的代码:
Dim scrup As Boolean: scrup = DisableScreenUpdating(Not Application.ScreenUpdating)
'Disable ScreenUpdating, for seemless operation
Function DisableScreenUpdating(val As Boolean) As Boolean
With Application
If .ScreenUpdating = val Then 'Gets rid of flashes for changing it to the same
.ScreenUpdating = Not val
End If
'Doesn't matter what happens above, this is based on what Excel would send back
DisableScreenUpdating = Not .ScreenUpdating
End With
End Function
答案 2 :(得分:0)
我已经看到了这个错误......但声明有效,只有VBA编辑器才会看到更改。 但是,您可以通过分配变量然后在VBA编辑器中读取它来查看更改。
>Sub testing()
>Dim i As Long
>
>Application.ScreenUpdating = False
>i = Application.ScreenUpdating
>MsgBox "Assigned to i...real value = " & CBool(i)
>
>Application.ScreenUpdating = True
>i = Application.ScreenUpdating
>MsgBox "Value of Application.ScreenUpdating = " & CBool(i)
>End Sub