none
Screen Flicker - EXCEL 2013 Only RRS feed

  • General discussion

  • Hello All,

    I have come across a problem in Excel 2013. When running a simple macro unprotecting a worksheet, the screen flickers. Even more problematic, however, is the fact that any command button form controls on the worksheet momentarily disappear.  Several points to note:

    1. I have already set Application.ScreenUpdating = False. This worked perfectly in Excel 2010 and older, yet not in Excel 2013. I have tested the same workbook and macro in both 2010 and 2013. 2010 runs flawlessly; 2013 falters.

    2. The issue only arises when unprotecting a sheet other than the currently active sheet. If I am on Sheet1 and I run a macro unprotecting Sheet2, the screen will flash. However, if I am on Sheet1 and I run a macro unprotecting Sheet1 - no flash. Again, this issue is only with Excel 2013.

    3. In addition to a screen flicker, any command buttons on the sheet disappear momentarily when the flicker occurs.

    A very basic workbook easily demonstrates this problem. This workbook contains two tabs - "Home" and "Other". The Home tab contains two command buttons. One, labeled "No Flicker", runs a macro that does NOT cause flickering. Another, labeled "Flicker", runs a macro that DOES cause flickering. The only difference between these macros is the name of the sheet that they unprotect.

    The "Flicker" macro code is as follows:

    Sub Flicker()
    
    Application.ScreenUpdating = False
    Worksheets("Other").Unprotect
    Worksheets("Other").Protect
    Application.ScreenUpdating = True
    
    End Sub

    Note that the "No Flicker" macro code is identical to the above, save that the sheet being unprotected/protected is "Home".  I have searched high and low for a solution and have tried absolutely everything I can think of, but to no avail. This simply does not make sense at all.  Why would this stop working in Excel 2013?

    Has anyone else encountered this? Does anyone know what may be the cause? Thanks!

    Wednesday, August 20, 2014 4:14 PM

All replies

  • Hi,

    Thank you for posting in the MSDN Forum.

    I have reproduced the issue in Excel 2013 and I'm trying to involve some senior engineers into this issue and it will take some time. Your patience will be greatly appreciated.

    Sorry for any inconvenience and have a nice day!

    Best regards

    Fei


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    Friday, August 22, 2014 9:58 AM
    Moderator
  • Do you really need to disable screenupdating?
    Friday, August 22, 2014 3:40 PM
    Moderator
  • Thank you, Fei!  I greatly appreciate it.  Keep me posted on what you are able to find out.

    Best,

    AP

    Friday, August 22, 2014 4:45 PM
  • Thanks for the reply, Peter.  

    You are 100% correct.  In the simple example mentioned in my post above, the Application.ScreenUpdating = False statement is not truly necessary.  The screen flickers whether or not it is included.

    The only reason I included it is because I know the usual response to a screen flickering issue is to include the Application.ScreenUpdating = False statement.  In most cases, that statement will stop the flickering.  I included that statement here, however, to show that even with this statement, the flicker is still happening.  Thus, something else seems to be going on. 

    -AP

    Friday, August 22, 2014 5:00 PM
  • Not sure what's going on with this but I guess related to the change from from MDI to SDI, apart from the obvious it's resulted in several unexpected changes.

    Screenupdating is sometimes disabled when there's no point, it will typically flicker when re-enabled, and the worst thing to do is to change it multiple times in a series of code, only once at start and enabled when done.

    Generally it's only worth disabling when code makes several changes to the UI, eg writing lots of cells, adding sheets, etc. and particularly to what's visible. If doing things to non active/visible sheets try not disabling at all.

    Friday, August 22, 2014 7:34 PM
    Moderator
  • I agree, the change to SDI in 2013 certainly could be playing a role.  Very good point, Peter.  I will be curious to see if there is a way to resolve the problem.

    And I concur, too, with your remarks above on when and when not to enable screen updating.  Good rules to follow.  I only wish using (or refraining from using) that line of code in this case would resolve the flickering problem.  Unfortunately, something deeper seems to be at play here.

    Friday, August 22, 2014 8:42 PM
  • Hi,

    I could reproduce the issue at my end and the issue seems to be unexpected and I have reported this to Product Group. Unfortunately there doesn't seem to be a work around to the issue at this point.

    Thanks

    Sangeeth


    Sangeeth,MSFT

    Wednesday, September 3, 2014 12:03 AM
  • I have been able to reproduce and "fix" this issue.

    It seems that if you step into the code you can cause the screenupdating to work as expected but when you run the code through a different method the screenupdating does not work.

    The work around is to put the executing code into a separate subroutine.

    For example:

    BROKEN:

    Sub Test()
    application.screenupdating = false
    'your code here'
    application.screenupdating = true
    end sub
    

    Working:

    Sub test()
    application.screenupdating = false
    call yourcodesub()
    application.screenupdating = true
    end sub
    
    sub yourcodesub()
    'your code here'
    end sub
    
    This seems to work for me when manipulating sheets between multiple workbooks. Let me know if this doesn't work for anyone else. Note I am using Excel 2013 on 64 Bit Windows 7

    Tuesday, March 3, 2015 3:36 PM
  • I've verified the problem between 2016 and 2010.  I have a very simple app that copy/pasts between two different workBOOKS (and different sheets of course).  It does it several times in a loop, and with 2016 it "flashes" (i.e., activates the other open workbook) every time a different workBOOK is activated.  In 2010, it works as expected.  Of course I DO have

     Application.ScreenUpdating = False

    set at the front. 

    This is a quickie app that does NOT follow the general guideline to avoid .Activate and .Select for some very good reasons.

    In any case, the displaying of each workbook in turn, over and over in 2016 makes it unworkable.  I have to go back to 2010 to run the app.  Should be fixed.

    Going back to the MDI would be one way :) :)  (I really miss that capability, which is why I even HAVE 2010.)

    Another observation:  The 2010 runs are 10 times faster than the 2016, apparently because of the display switch interrupting the execution.

    Pete A


    Pete A

    Sunday, June 5, 2016 6:14 PM
  • Good day

    Please advise if Microsoft engineers are still working on the issue or have given up?

    I have been struggling with the software since Office 2013 and the screen flicker is most certainly due to the protection/unprotection of the worksheets.  I have not set any passwords, so the code is "<g class="gr_ gr_249 gr-alert gr_spell gr_inline_cards gr_run_anim ContextualSpelling ins-del multiReplace" data-gr-id="249" id="249">z</g><g class="gr_ gr_249 gr-alert gr_spell gr_inline_cards gr_disable_anim_appear ContextualSpelling ins-del multiReplace" data-gr-id="249" id="249">xy</g>.unprotect"  or "xyz.protect" as required at the beginning and end of the code.

    There is no screen flicker with Excel 2010 or earlier version of Excel.

    Regards

    Monday, May 8, 2017 7:06 AM
  • The fix did not work for me.


    Bob

    Monday, February 19, 2018 6:31 PM
  • worked for me, Thanks a lot
    Tuesday, March 27, 2018 8:14 AM