"ByVal Cancel As MSForms.ReturnBoolean"

G

Guest

Have been unable to find any help on these details, nor any VB programmers
who can give a definitive answer...

the subject line code is default for many event subs in VBA. exactly what is
setting the Cancel var?? to put it another way, when or what would cause the
var Cancel to be True? Have tested in a huge # of scenarios involving closing
and cancelling forms and controls, and have yet to see Cancel = anything
besides False.

also...ReturnBoolean is obviously not same as Boolean. can it be anything
else besides True or False? would it be useful anywhere else?

thanks for any replies :)
 
R

Rob Bovey

MSForms.ReturnBoolean is a class exposed by the MSForms type library.
This class has only one property, the default Value property. The purpose of
an MSForms.ReturnBoolean variable is not to pass any information into an
event it's to allow you to pass information back to VBA telling it whether
or not you want to cancel the current operation. Setting the Cancel = True
(the equivalent of Cancel.Value = True) means you do want to cancel the
operation. Setting Cancel = False or leaving it with its default value of
False means you don't want to cancel the operation.

--
Rob Bovey, Excel MVP
Application Professionals
http://www.appspro.com/

* Take your Excel development skills to the next level.
* Professional Excel Development
http://www.appspro.com/Books/Books.htm
 
T

Tom Ogilvy

Your code would be what sets the cancel to true. You will find this in
events usually starting with Before. for example, in the BeforeSave event
you might run code to check if all required cells are filled out. If they
are not, you might have your code do

Cancel = True

and then the workbook won't be saved (the action which triggered the event
to run is cancelled).

So it will always be passed in as False. You routine has the option of
setting it to true if you want to cancel the normal action which would be
performed in response to the action that triggered the event.
 
G

Guest

AHA INSIGHT. Thank you very much, Rob and Tom.



Rob Bovey said:
MSForms.ReturnBoolean is a class exposed by the MSForms type library.
This class has only one property, the default Value property. The purpose of
an MSForms.ReturnBoolean variable is not to pass any information into an
event it's to allow you to pass information back to VBA telling it whether
or not you want to cancel the current operation. Setting the Cancel = True
(the equivalent of Cancel.Value = True) means you do want to cancel the
operation. Setting Cancel = False or leaving it with its default value of
False means you don't want to cancel the operation.

--
Rob Bovey, Excel MVP
Application Professionals
http://www.appspro.com/

* Take your Excel development skills to the next level.
* Professional Excel Development
http://www.appspro.com/Books/Books.htm
 
Joined
Jun 10, 2018
Messages
1
Reaction score
0
How does it work?

The ByVal specifier makes the program to pass a copy of the object to the function, if we change the property, we are only changing a local object within the function. This is does not make sense.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top