ScreenUpdating不会在Excel 2013中更新屏幕

时间:2014-08-07 02:52:56

标签: excel vba excel-vba

我已经运行了大量的代码,运行时间超过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

4 个答案:

答案 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

关于这种行为的方式或原因,我尚不清楚。据我现在所发现,它与停用屏幕更新之前的活动单元有关,与重新激活屏幕更新之后的活动单元相同。但是我还没有