I always assumed it was just used so that it didn't scare end users into thinking their PC was about to crash.
When I started reading more into improving the efficiency of your code I understood what it was for but how much of an effect does Turning off screen updating will only make a difference to execution time if the code interacts with Excel in a way that causes changes to the screen content.
This means that the Excel screen can look like it has "gone crazy" while the macro is running.
One thing you may want to do with your macro to make it run faster and to prevent distracting flashes on the screen is to turn off screen updating while the macro is running.
And usually when you write your code, you’re just trying to get things to work. But after a while you notice your code is beginning to get very slow when it runs. I mentioned that the issue is that the screen is constantly updating, which is causing the code to run slowly. The code runs much faster when there’s less real estate to update on your screen. Screen Updating = True End Sub Now the code runs at 1.4 seconds for me, which is a huge improvement.
It’s not as fast as it used to be and it can begin to get pretty frustrating waiting a long time for your code to finish. Color = vb Black Else ' else, color the cell light gray cell. If you think about it, if there were of the screen to process, it should run faster, right? Now it should make sense why it’s a good idea to turn off Public Sub Add Content To Sheet() Application. Color = vb Black Else ' else, color the cell light gray cell.
Then comment out the line which turns off screen updating and see what happens; you should find that you scroll down the sheet as the numbers get filled.
Screen Updating = True Try running it and you should see a short pause followed by column A getting filled with numbers.
The grater the amount of screen changes the bigger the impact will be. Other application settings that can make a difference to execution time are Calculation and Event handling. Enable Events = False ' Code here Clean Up: On Error Resume Next Application. Calculation = xl Calculation Automatic Application. Enable Events = True Exit Sub EH: ' Do error handling Go To Clean Up End Sub Sub test Screen Updating() Dim i As Integer Dim numb Switches As Integer Dim results As String 'swap between sheets this number of times numb Switches = 1000 'keep track of time Dim start Time As Double start Time = Time 'swap between sheets 1/2 (need both sheets or this will crash) For i = 1 To numb Switches Sheets(1 (i Mod 2)).
Use this code template as a starting point (the error handler ensures that these properties are turned back on at the end of the sub, even if it errors) Sub Your Sub() On Error Go To EH Application. Select Next i 'get results results = "Screen Updating not disabled: " & Format(Time - start Time, "hh:mm:ss") & " seconds" start Time = Time 'scenario 2 - screenupdating disabled Application.
Well, the function is quite long, but you're looking at the function's entry point. The immediate window says True, then False, then True again as expected, but the code doesn't seem to have any effect on the application. If all of this happens, then you know it is working correctly. Net 2003 and Office 2010 Code: Excel Graphing | Excel Timer | Excel Tips and Tricks | Add controls in Office | Data tables in Excel | Gaussian random number distribution (VB6/VBA, VB.
Screen Updating = False If my Debug = False Then On Error Go To Error Handler I'm afraid that's pretty much it. Screen Updating End Sub As I step through the code when I hove over Application.screen Updating it always says True. Then put it in debug mode and step through with screen updating turned off again, you should find that you still see the numbers going in one by one.
which obviously isn't working because the screen updates a whole lot afterwards. I almost wish this were more complicated; the fact that everything looks so simple is making it difficult to think of what could possibly be happening! So this morning application.screen Updating was working as expected. The test code that I wrote is below: Sub test() Debug. One thing that seems to be common among those modules not working, is that they all contain code that changes worksheets. In any case, it's a real mystery why this happens from one day to another!