Thread: Screen Updating
View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Peter T Peter T is offline
external usenet poster
 
Posts: 5,600
Default 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