我已经运行了大量的代码,运行时间超过30分钟,并且我设置了它以便在大多数代码运行时屏幕更新设置为false但是我不时地将其转换为true直接回到假。
在2003年,2007年和2010年这样做可以让屏幕暂时更新,因此您可以看到工作表现在看起来像什么,但在2013年它不起作用......
如何让Excel 2013临时更新屏幕中间宏...
Sub Test()
Application.ScreenUpdating = False
' Do loads of stuff here
Application.ScreenUpdating = True ' Enable to refresh screen
Application.ScreenUpdating = False ' Disable again
' Do more stuff here
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:2)
DoEvents为我工作。我不知道是什么导致这种情况,但在循环方法中插入DoEvents似乎在我使用它时纠正了我的问题。
Sub LoopMethod
Foreach i in Identity
Call Loopthis
Next For
EndSub
Sub Loopthis
DoEvents
select.Cells(i, 6)
EndSub
答案 1 :(得分:1)
我确实在我想要更新的每个事件/屏幕之前放置了这段代码,并且对我来说很好:
Application.ScreenUpdating = True
DoEvents
Sheets("Main").Select 'Screen to update
此外,我将代码放在我用来在Sheet中编写someting的每个循环中。
答案 2 :(得分:0)
激活另一个工作表然后再次激活所需的工作表对我有用 - 我有一个代码,其中屏幕更新失败,我激活了另一个工作表,然后再次我正在处理的那个,它更新了当前屏幕。
application.ScreenUpdating = False
''''''code'''''''
Thisworkbook.worksheets(any otherworksheet in workbook).activate
Thisworkbook.worksheets(current worksheet).activate
application.ScreenUpdating = True
答案 3 :(得分:0)
据我所知,可以跳到另一个单元来解决问题。您可以执行以下操作:
Dim Ac as object
Set Ac = ActiveCell
Ac.Offset(0,IIf(Ac.Column = Application.Columns.Count, -1, 1)).Activate
Ac.Activate
关于这种行为的方式或原因,我尚不清楚。据我现在所发现,它与停用屏幕更新之前的活动单元有关,与重新激活屏幕更新之后的活动单元相同。但是我还没有