by Jason Monroe (4 Submissions)
Category: VB function enhancement
Compatability: Visual Basic 3.0
Difficulty: Intermediate
Date Added: Wed 3rd February 2021
Rating: (9 Votes)
This is a drop in replacement for the VB Message box routine (MsgBox). It will log to a file all messages that you display to the user that are marked with vbCritical. This routine also expands the standard VB Messagebox by giving you the developer the ability to log to file, even if you don't set vbCritical.
Inputs
Same as MsgBox
Assumes
Insert this code into a module, will not work properly if placed in a class
Code Returns
Same as MsgBox
Public Function MsgBox(Prompt As String, Optional Buttons As VbMsgBoxStyle = vbOKOnly, Optional Title As String, Optional HelpFile As String, Optional Context As Single, Optional LogToFile As Boolean = False) As VbMsgBoxResult
Dim strErrorLog As String
Dim iFileHandle As Integer
Dim strErrorTitle As String
Dim iResult As Integer
iFileHandle = FreeFile
strErrorTitle = App.EXEName & " : " & Title
strErrorLog = App.Path & "\" & App.EXEName & ".log"
' Force error loging on all critical messages
If (Buttons And vbCritical) Then
LogToFile = True
End If
' if the user has choosen to log, or it's a critical message, log it
If LogToFile = True Then
Open strErrorLog For Append As #iFileHandle
Print #iFileHandle, Now, Prompt
Close #iFileHandle
End If
' Call the real message box routine
iResult = VBA.MsgBox(Prompt, Buttons, strErrorTitle, HelpFile, Context)
MsgBox = iResult
End Function