Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub test_screen_updating()
Range("A1:A10").ClearContents
Application.ScreenUpdating = False
For i = 1 To 10
Range("A" & i).Value = i
If i = 2 Then
' MsgBox "A2 was updated: " + CStr(Range("A2").Value)
Application.StatusBar = "A2 updated to: " + CStr([A2])
End If
Sleep 500
Next i
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub
4 回答
"doesn't jump around all the time"部分让我想知道你是否在代码中使用了
Select
和Activate
. 这些都是非常耗时的操作,你应该能够在没有它们的情况下实现大多数事情 .明智地使用
Range
的Range
和/或Cells
属性应该比Select
和/或Activate
的任何组合快得多 . 如果你可以加速你的代码,那么你可以离开ScreenUpdating
,从而解决你的原始问题将单元格绑定到文本框或其他控件,并让它显示您要关注的值 .
有点黑客,但是当您想要通知的特定单元格被更新时,您可以打印错误消息,或者[更少侵入的东西]只需更新状态栏:
如果您更新状态栏,请确保重置状态栏 .
如果速度是一个问题,你能做到:
?这可以产生很大的不同 .