Application.ScreenUpdating

Copper Contributor

I have seen the other posts on this topic, where the property does not function in Excel 2016, but there still does not appear to be a remedy for this problem.

 

I, like probably thousands of vba writers are now finding their Excel 2010 (or earlier) macros employing this property to suppress screen flicker (and jumping between workbook windows) now make their applications look very amateurish.

 

With so many questions and comments since the release of Excel 2013, when this issue first occurred, there has not been an explanation from Microsoft as to why this property has been disabled and more importantly whether you accept with the level of concern a fix is required.

 

Please can you explain and how users can overcome this issue.

9 Replies

Hi David,

 

Can you explain explicitly what the issue is?

I use Application.ScreenUpdating frequently in my VBA solutions, but I didn't notice any issue in it.

This only occurs in Excel 2013 and Excel 2016.

Typical use for Application.ScreenUpdating would be to supress screen flicker during opening and transfer of data to another workbook. Without this property, the second workbook becomes the active element and the primary window. Even providing the instruction to 'Activate' the first workbook immediately after opening the second still transfers the primary window to the second momentarily.

 

This becomes even more evident if cell data is moved from one workbook to another.

 

Using Application.ScreenUpdating in Excel 2010 does exactly as intended and locks the screen while processes such as those described run.   

The reason for that might be the SDI (Single Document Interface) that was first introduced in Excel 2013.

Please read this article for more information about it.

Yes, I see where you are going but as the two open workbooks are in the same instance and active within their own window environment the application property should still be effective on the primary display.

It does state: "all of the Excel application-level window methods, events, and properties remain unaffected and work the way they have in previous versions of Excel", so this implies 'ScreenUpdating' should be the same.

I still don't understand why Microsoft have not answered this question considering the number of references that can be seen just by putting this inquiry into a web browser. Plus, what are all those Excel application developers using 'ScreenUpdating' doing when used in 2013/2016?

David,

 

I have Excel 2010 and Excel 2016 both installed on my PC, so can you provide a code example to be able to reproduce this issue on my own?

 

Anyway, I recommend you to ask this community instead because it's the best place to get support for such an issue.

Someone has reported this problem to Microsoft in the Excel’s suggestion box.

Please check it here and vote for it as I did.

Try this fix

Set the ScreenUpdating property on the Workbook object like this:

Workbooks("your workbook name.xls").Application.ScreenUpdating = False

' add your code in here

Workbooks("your workbook name.xls").Application.ScreenUpdating = True

where "your workbook name" is the workbook that you are updating.

I posted this fix on the excel suggestion forum too.

Sorry, I realized I had the workbook (to be updated) minimized and that's why it worked! Try this, although there might be better code to minimize a particular workbook window, the following was OK for me. Application.ScreenUpdating = False Dim wbName As Window Set wbName = Windows("your workbook name") wbName.Visible = False ' other code here Application.ScreenUpdating = True wbName.Visible = True

@Elle100 

That didn't format very well, let me try again.  Also, I found a neater way to minimize the workbook being updated.

Application.ScreenUpdating = False
Dim wbName As Window
Set wbName = Windows("name of workbook being updated")
wbName.WindowState = xlMinimized

' other code in here

Application.ScreenUpdating = True
wbName.WindowState = xlMaximized