View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming
Doug Glancy Doug Glancy is offline
external usenet poster
 
Posts: 770
Default ByRef Cancel in event module

Hello,

I've gotten in the habit of calling regular procedures from my workbook
event procedures and putting all the working code in the regular subs.
Working on a BeforePrint Procedure, to get it to work I had to set declare
the cancel_print argument ByRef in order to get it to actually cancel the
print job - if I pass it ByVal, Cancel in the event procedure never gets set
to True. Here's a simplified version:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Call wb_bf(Cancel)
End Sub

Sub wb_bf(ByRef cancel_print As Boolean)
If MsgBox("cancel?", vbOKCancel) = vbCancel Then
cancel_print = True
End If
End Sub

I want to know if declaring cancel_print to ByRef is good practice here.
I've gotten the impression that ByRefs are "dangerous." If so, is there a
safer way to do this, like calling a boolean function? Also, the actual
application has3 layers of modules: it starts at the application level class
event, Cancel is passed to an addin, and then to the wb_bf sub.

Thanks,

Doug