我有一个运行大约一分钟的宏并加载/处理大量数据。当然,我已关闭屏幕更新,以便它运行得更快,并且不会一直跳转。但是,我希望能够打开屏幕更新/强制更新一个单元格。
我不能只做以下事情:
Application.ScreenUpdating = True
<SET VALUE>
Application.ScreenUpdating = False
因为当您将屏幕更新设置为true时,它会更新自您将屏幕更新设置为false以来所做的所有更改。如何只更新那个单元格?
谢谢!
答案 0 :(得分:3)
当然,我已经关闭了屏幕更新,以便更快地运行 不会一直跳来跳去。
“不会一直跳转”部分让我想知道您是否在代码中使用了Select
和Activate
。这些都是非常耗时的操作,你应该能够在没有它们的情况下完成大部分工作。
明智地使用相关Range
的{{1}}和/或Cells
属性应该比Worksheet
和/或{{1}的任何组合快得多}}。如果您可以充分加快代码速度,那么您可以离开Select
,从而解决原始问题
答案 1 :(得分:1)
将单元格绑定到文本框或其他控件,并让它显示您想要关注的值。
答案 2 :(得分:0)
有点黑客攻击,但是当你想要通知的特定单元格被更新时,你可以打印一条错误消息,或者[更少侵入的东西]只需更新状态栏:
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
如果您更新状态栏,请确保重置状态栏。
答案 3 :(得分:0)
如果速度是个问题,你可以这样做:
Application.Calculation = xlCalculationManual
<process>
Application.Calculation =xlCalculationAutomatic
?这可以产生很大的不同。