Here’s a little trick I’m not sure many people know about, but that I’ve used for so long, I’d basically forgotten about it.
I wrote about overriding the ERR object in VB here, and also wrote a far more involved article about it.
But did you know you can also override the MSGBOX function?
Just create a function with the following signature in a BAS module of your choice:
Public Function MsgBox(ByVal Prompt$, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal Title$ = "", Optional ByVal HelpFile$ = "", Optional ByVal Context As Long = 0) As VbMsgBoxResult
Put the appropriate code in it, and presto, custom msgbox.
Why, you might ask?
- Personally, I like the option of logging every msgbox that’s displayed by my app. Errs are handier, but msgbox’s can be useful.
- In addition, you have the option of calling the MessageBox API call directly yourself, which gives you access to additional flags that you can’t use with the VB version alone.
- You might also decide that the MSGBOX proper just doesn’t look good, and craft up a modal, nicely skinned form to stand in its place.
- And finally, in a particular app I worked on, I needed to call a function BEFORE and a different function AFTER displaying every msgbox. I certainly didn’t want to alter every call to MSGBOX and add those extra lines. Overriding it made that a trivial task.
Please let me know if you come up with any good uses for this trick.