ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Screen Updating (https://www.excelbanter.com/excel-programming/407300-screen-updating.html)

[email protected]

Screen Updating
 
Is there a way to prevent screenupdating when calling a macro from
inside another macro? In this example
when running macro 1, macro 2 is called and one of the lines says
screenupdating=true and would then update the screen before macro 3
runs.

( I am actually running into this because im using ActiveX boxes
with cmb_change() ) the only thing i can think of is to set a bunch of
variables as boolean and use if then statements before the
application.screenupdating=true command. Unless there is a way to set
a variable for the original caller sub?

Thanks



sub macro1()
application.screenupdating=false
Call macro2
Call macro3 ' Not shown
application.screenupdating=true
end sub

sub macro2()
application.screenupdating=false
'do some code
application.screenupdating =true
End sub

Peter T

Screen Updating
 
No not as written (if I follow). Indeed it's well worth ensuring that
ScreenUpdating is only reset once within a multiple series of routines, or
you'll get a flicker each time. Try and do something like this -

Sub main()
Application.screenupdating = false
call Macro1
Call Macro2
Application.screenupdating = True
end sub

and remove 'application.screenupdating=true' from both macro1 & 2

If for other reasons it's not viable to remove the reset in each macro, a
lazy alternative alternative (frowned on by some) might be something like
this

Public gbDontUpdate as Boolean ' top of a normal module

Sub main()
' best to ensure code returns even if errors elsewhere
on error goto errH '
Application.screenupdating = false
gbNoScrUpdating = True
call Macro1
Call Macro2
errExit:
Application.screenupdating = True
gbNoScrUpdating = True
end sub

In both Macro1 & macro2 -

If Not gbNoScrUpdating Then
Application.screenupdating = True
End if

Regards,
Peter T


wrote in message
...
Is there a way to prevent screenupdating when calling a macro from
inside another macro? In this example
when running macro 1, macro 2 is called and one of the lines says
screenupdating=true and would then update the screen before macro 3
runs.

( I am actually running into this because im using ActiveX boxes
with cmb_change() ) the only thing i can think of is to set a bunch of
variables as boolean and use if then statements before the
application.screenupdating=true command. Unless there is a way to set
a variable for the original caller sub?

Thanks



sub macro1()
application.screenupdating=false
Call macro2
Call macro3 ' Not shown
application.screenupdating=true
end sub

sub macro2()
application.screenupdating=false
'do some code
application.screenupdating =true
End sub




[email protected]

Screen Updating
 
Ya, doing your first example is not viable because sometimes the
macros get run alone. I found a similar solution after some digging
(which is a little more useful) at http://www.excelguru.ca/node/54

Thanks for the help!


All times are GMT +1. The time now is 10:58 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com