Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Separate subroutine for application methods?

Tags:

excel

vba

Right now I'm in the middle of writing a mildly complicated network of Excel workbooks that is almost entirely driven by VBA automation, so there are lots of macros being written.

I try and disable screenupdating, alerts, and events wherever possible. To save some time and headaches in tracking down where I may have enabled/disabled these, I've written a subroutine where the desired settings for each are passed in as arguments, so you can set up what you want enabled/disabled in one line of code (or at least that's the idea anyway).

This is what that subroutine looks like:

Sub AppToggles(Optional ScrUpdating As Boolean = False, _
               Optional DispAlerts As Boolean = True, _
               Optional Events As Boolean = False)

With Application    
   .ScreenUpdating = ScrUpdating
   .DisplayAlerts = DispAlerts
   .EnableEvents = Events
End With    

End Sub

I call it from various other subroutines in the same module with Call AppToggles(True, True, True) (or whatever combination is desired.

Problem is, the subroutine doesn't seem to do anything. It's such a simple routine that stepping through it tells me nothing. Hovering over the keywords shows me that each switch is not being set to the arguments passed.

I could set up an If statement for each one I suppose, but I'm curious as to where I fell off the tracks :P

like image 819
M.Banerjee Avatar asked May 19 '26 05:05

M.Banerjee


1 Answers

Don't Step through the code... Run it normally or by F5

Your routine works fine for me.

Sub TestMe()
Call AppToggles(False, False, False)
MsgBox "ScreenUpdating: " & Application.ScreenUpdating & vbCrLf & _
"DisplayAlerts: " & Application.DisplayAlerts & vbCrLf & _
"EnableEvents: " & Application.EnableEvents
Call AppToggles(True, True, True)
MsgBox "ScreenUpdating: " & Application.ScreenUpdating & vbCrLf & _
"DisplayAlerts: " & Application.DisplayAlerts & vbCrLf & _
"EnableEvents: " & Application.EnableEvents
Call AppToggles(True, True, True)
End Sub
like image 170
B Hart Avatar answered May 22 '26 04:05

B Hart