Excel VBA屏幕更新 – 只更新一个单元格

我有一个运行大约一分钟的macros,并加载/处理大量的数据。 当然,我已经closures了屏幕更新,使其运行速度更快,不会一直跳。 不过,我希望能够打开屏幕更新/强制更新一个单元格。

我不能只是这样做:

Application.ScreenUpdating = True <SET VALUE> Application.ScreenUpdating = False 

因为当您将屏幕更新设置为true时,它会更新自设置为false以来所做的所有更改。 我如何更新一个单元?

谢谢!

当然,我已经closures了屏幕更新,使其运行速度更快,不会一直跳。

“不会一直跳”部分让我怀疑你是否使用SelectActivate你的代码很多。 这些操作非常耗时,如果没有这些操作,你应该能够完成大部分任务。

明智地使用相关WorksheetRange和/或Cells属性应该比Select和/或Activate任何组合快得多。 如果你可以加快你的代码,那么你可能会离开ScreenUpdating ,从而解决你原来的问题

将单元格绑定到文本框或其他控件,并让它显示您想要关注的值。

一种黑客,但你可以打印一个错误消息,当你想要通知特定的细胞更新或[对于更less的干扰]更新状态栏:

 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 

只要确保你重置状态栏,如果你更新它。

如果速度是一个问题,你可以这样做:

 Application.Calculation = xlCalculationManual <process> Application.Calculation =xlCalculationAutomatic 

? 这可以造成很大的不同。