" vbWatchdog is off the chart. It solves a long standing problem of how to consolidate error handling into one global location and avoid repetitious code within applications. "
- Joe Anderson, Microsoft Access MVP
Meet Shady, the vbWatchdog mascot watching over your VBA code → (courtesy of Crystal Long, Microsoft Access MVP)
fixed: ErrExCallstack.ProjectConditionalCompilationArgs and ErrEx.SourceProjectConditionalCompilationArgs and source code parsing with conditional arguments on latest VBE7.1 builds
fixed: issue relating to OnErrorUnwind and subsequent errors in ErrEx.Finally block coming through as OnErrorGotoLabel instead of OnErrorInsideFinally
Update: v3.9.2, 26-May-2021
(64-bit affected only) Fixed: crash on ErrEx initialization in VBA 7.1.1109 x64
Update: v3.9.1, 29-Apr-2021
(64-bit affected only) Fixed: VariablesInspector names of variables were output as empty strings since the latest VBA x64 update.
Fixed: VariablesInspector now doesn't attempt to probe object variables for their typelibrary container, to workaround a VBA type library bug (e.g. "{Object/TreeView.clsTreeView}" now becomes "{Object/clsTreeView}" in ValueDesc)
Update: v3.9.0, 01-Dec-2020
(64-bit affected only) Fixed: broken error propagation in some instances since v3.8.8
Update: v3.8.9, 23-Sep-2020
Fixed: 'Toggle LineNumbers' VBE addin would sometimes crash on 64-bit
Update: v3.8.8, 19-Aug-2020
Fixed: error E_VBWATCHDOG_SELFTESTFAIL3 occuring on 64-bit editions of VBA (latest revisions, approx VBE v7.1.10.99+)
Update: v3.8.7, 20-Jun-2020
Added: support for WithEvents variables in the VariablesInspector. WithEvents variables are now reported and accessible as per ordinary class module variables
Update: v3.8.6, 12-Jun-2020
Added: ProjectCreateClassInstance to the ErrExCallstack class for allowing creation of VBA class modules given a string argument name. E.g.:
With ErrEx.LiveCallstack.ProjectCreateClassInstance("Class1")
.TestProc
End With
Update: v3.8.5, 18-Jan-2020
Fixed: Incompatibility with Cisco AMP when running vbWatchdog inside Office 2016+ [32-bit only, runtime fail code 1050]
Update: v3.8.4, 21-Jul-2018
Fixed: Issue on 64-bit VBA causing ErrEx.Disable to not disable vbWatchdog correctly (also affected automatic unload on project closure)
Update: v3.8.3, 28-Mar-2018
Improved the accuracy of the automatic line numbering system when parsing sourcecode that code involves explicit line numbers, line-seperators and line-continuation characters
Update: v3.8.2, 15-Feb-2018
Fixed crash when running an Access ACCDE/MDE that was compiled on a machine where the vbWatchdog Addin is not installed and active. Instead, an informational warning will be displayed, and vbWatchdog will remain disabled.
Update: v3.8.1, 02-Feb-2018
Fixed: (64-bit) an issue with the variables inspector when the latest builds of VBA from January 2018 are installed.
Update: v3.8.0, 02-Feb-2018
Fixed: (32-bit) an issue with the variables inspector when the latest builds of VBA from January 2018 are installed.
Update: v3.7.1, 23-Feb-2016
Fixed: Issue when using vbWatchdog in classic VB6 projects, when compiling to DLL
Update: v3.7.0, 19-Dec-2015
Fixed: Occasional crash in 64-bit mode, particularly on Windows 10.
Update: v3.6.1, 30-Sep-2015
Re-release of v3.6.0, with updated license agreement.
Update: v3.6.0, 14-Aug-2015
Fixed: crash on the 64-bit edition of Office 2013 with the kb3039734 update released 11th Aug.
Update: v3.5.4, 15-Jan-2015
Fixed: VariablesInspector Value property would previously return Empty for arrays of custom classes.
Update: v3.5.3, 28-Nov-2014
Fixed: Custom image support for the error dialog, when loading a bitmap in-memory rather than from disk. Also requires that you use the latest version of the vbWatchdog Sample MDB file to do the customizations.
Update: v3.5.2, 15-Nov-2014
Improved: Modifying the ErrEx.Number property from inside a global error trap now propagates through to VBA local error handling when your global error trap exits
Update: v3.5.1, 30-Oct-2014
Added ErrEx.DisableMemorySafetyChecks boolean property (defaults to False). Set to True to turn off the memory safety checks that vbWatchdog performs to ensure stability and reliability of itself under extreme error conditions (particularly for cases where corruption of memory has occurred). Turning off the safety checks offers faster performance. WARNING: Do not use this property on VB6 projects! VBA ONLY.
Update: v3.5.0, 02-Aug-2014
Fixed: a problem where the VariablesInspector occasionally picked up the variable information from the wrong procedure, when conditional compilation is in use for Declares in a module (VBA7 only).
Update: v3.4.7, 30-Apr-2014
Fixed: Line-number miscount issue when multiple logical lines appear on the same physical line as a Dim/Const/Static statement (e.g. 'Dim A As Integer: A = 1')
Update: v3.4.6, 13-Mar-2014
Fixed: The VariablesInspector was reporting variables declared as Byte or LongLong as unrecognized.
Update: v3.4.5, 06-Jan-2014
Corrected the handling of stack overflow / recursion errors, which weren't catchable with local error handling.
Update: v3.4.4, 07-Dec-2013
Fixed: evaluation of precompiler directives when underscore characters are used anywhere in the expression.
Fixed: ErrEx.SourceProjectIsSaved and ErrEx.Callstack.ProjectIsSaved properties were returning the wrong boolean value.
Update: v3.4.3, 05-Nov-2013
Fixed: FailCode 1160 error when vbWatchdog was initialized with v6.4.99.71 of the VBE6.DLL (rare version of the DLL)
Update: v3.4.2, 03-Nov-2013
Fixed: The OnErrorUnwind and OnErrorUnwindNoFinally states have been corrected to ensure that no memory leaks are created when they are used. In some instances, prior to v3.4.2, a memory leak would occur and cause the host application to not terminate correctly when exiting (e.g. the MSACCESS.EXE process would stay alive in memory). All now fixed.
Update: v3.4.0, 14-Oct-2013
Added: ErrEx.HostAllowsBreakNow boolean read-only property available inside your global error trap, indicating whether the host application (Access, Excel etc) has indicated that it doesn't want to break on this error. Useful for ignoring unhandled errors occurring in Excel cell VBA formulas (that ordinarily don't cause the VBA debugger to display on error). Example:
Public Sub OnError()
Select Case ErrEx.State
Case OnErrorGoto0
If Not ErrEx.HostAllowsBreakNow Then
ErrEx.State = OnErrorEnd
Exit Sub
End If
ErrEx.State = ErrEx.ShowErrorDialog()
...
End Select
End Sub
Update: v3.3.2, 10-Oct-2013
Fixed: ACCDE compilation on Access 2013 caused vbWatchdog to fail unless the VBA code was fully compiled before creating the ACCDE.
Update: v3.3.1, 27-Sep-2013
Improved: internal handling of errors in rare situations where vbWatchdog is unable to call your designated global error trap for any reason.
Update: v3.3.0, 19-Sep-2013
Added: ErrEx.IgnoreHandledErrors boolean property. Defaults to False. When set to True, only unhandled errors (such as OnErrorGoto0, OnErrorInsideCatch and OnErrorInsideCatchAll) will pass through to your global error trap. This gives performance improvements if you're not at all interested in handled errors (like OnErrorResumeNext).
Update: v3.2.2, 10-Sep-2013
Improved VBA loader code (to disambiguate VBA engine identification if multiple instances of the VBA engine are loaded in the application process at the same time).
Update: v3.2.1, 28-Aug-2013
Improved: Errors that occur when processing expressions in the Watch window no longer pass through your global error trap [this also includes hovering over properties in the VB IDE]
Update: v3.2.0, 22-Aug-2013
Improved: The vbWatchdog installer (for developers) and the developer-addin DLL are now digitally signed to prevent excessive warnings on installation
Update: v3.1.2, 12-Aug-2013
Fixed: internal uninitialized variable, related to previous FailCode 1210 bug (E_VBWATCHDOG_UNSUPPORTED_VBA_VERSION)
Fixed (VB6 compiled files only): Procedure ordinal numbers listed in the callstack when the procedure name is unavailable was off-by-one (e.g. '{PRIVATE}#0' should have been '{PRIVATE}#1'. Plus; Changed '{PRIVATE}#' to '{PROC}#' for clarity.
Update: v3.1.0, 08-Aug-2013
Improved: The error dialog now appears on the active monitor in multi-monitor situations.
Improved: Added a new ErrEx.SortVariables boolean property (defaulting to True) that causes the exposed list of variables to be ordered alphabetically (also affects the error dialog variables dump).
Improved: vbWatchdog now supports older Operating Systems like Windows 95, 98 and Windows ME which were previously unsupported.
Fixed: Further fixes to prevent the FailCode 1210 error encountered when calling ErrEx.Enable() in some environments.
Update: v3.0.6, 22-Jul-2013
ErrEx.ProjectFilterList now defaults to ";ACWZMAIN;ACWZTOOL;ACWZLIB;UTILITY;" (added the 'UTILITY' project name which is used by one of the MS Access addins)
Fixed: occasional FailCode 1210 when vbWatchdog gets restarted.
Update: v3.0.5, 16-Jul-2013
Fixed: Propagation bug (v3 only).
Update: v3.0.4, 08-Jul-2013
Fixed: ErrEx.ReThrow method was failing in some specific cases, causing the old VBE error dialog to appear.
Update: v3.0.3, 14-Jun-2013
Further improved the internal analysis of pcode for greater accuracy when determining error line numbers
Update: v3.0.2, 13-Jun-2013
Improved the internal analysis of pcode for greater accuracy when determining error line numbers
Loads of new features and improvements. Check them out here: What's new in v3
Update: v2.8.7, 22-May-2013
We are proud to announce that the eagerly anticipated VERSION 3 of vbWatchdog is currently being beta tested by a private group of developers.
The product has been months in the making, and we've ensured there's something for everyone in this major update. Being our flagship product, we want to ensure our customers get the chance to test the pre-release version of vbWatchdog. Please drop us an e-mail if you wish to get involved.
ESTIMATED RELEASE DATE: 10th JUNE 2013
Customers on an active support package will receive a free upgrade. Orders since May 1st 2013 will receive a complimentary upgrade to version 3.
Some teasers...
A new ErrEx.State of OnErrorUnwind (like OnErrorEnd, but no reset of global variables)
A new ErrEx.ReThrow method for throwing a locally handled error back up the callstack when inside an ErrEx.Catch block
The VariablesInspector has been extended with type information inside variable-dumps (displays the default property of objects where appropriate, and also identifies the real class type of generic objects/variants where possible)
New properties such as:
ErrEx.SourceProjectFilename,
ErrEx.SourceVBEProject,
ErrEx.SourceProjectIsCompiled,
ErrEx.SourceProjectIsSaved,
ErrEx.SourceProjectConditionalCompilationArgs
Many efficiency and performance improvements, with a totally re-written core
vbWatchdog no longer requires the 'Allow programmatic access to the VBA project' switch in VBA hosts like Excel
Now supports all VBA hosts, even those that don't expose an Application.VBE property, like Outlook
Downloadable PDF manual for registered users
Update: v2.8.7, 18-Dec-2012
Fixed: Setting the OnErrorDebug state wasn't always working correctly (sometimes the breakpoint was not being triggered and the error instead propagated back up the callstack)
Update: v2.8.6, 08-Dec-2012
Fixed: Setting the OnErrorEnd state in a global error trap inside the Access runtime environment was not always propagating the error all the way back up the callstack.
Update: v2.8.5, 24-Sep-2012
Fixed: VBA addin installation for when VBA is run under elevated user permissions (e.g. 'Run as administrator'). Note: must run the addin installer under the same elevated user permissions (e.g. 'Run as administrator').
Update: v2.8.4, 17-Jul-2012
Fixed: Office 15 beta issue with ErrEx.Enable throwing error E_WATCHDOG_SELFTESTFAIL.
Fixed: Office 15 beta issue with the developer Addin potentially causing a fault if installed on a machine with Office 14 also installed (and vbWatchdog enabled)
Known issue in Office 15 beta: ErrEx.ShowHelp() fails, and Help buttons on our error dialogs also fail - this will be fixed before Office 15 RTM.
Update: v2.8.3, 07-Jul-2012
Improved: Installer for users where the AppData folder location changes due to roaming profiles
Update: v2.8.2, 09-Jun-2012
Fixed: (VBA 64-bit only) Issue causing incorrect detection of error state OnErrorInsideCatch instead of OnErrorGoto0 in some instances. [reported by Petros Chatzipantazis, thanks]
Fixed: (VBA 64-bit only) Fixed crash occurring on Office 2010 SP1 for floating point exceptions triggered in class modules in some instances. [reported by Petros Chatzipantazis, thanks]
Update: v2.8.1, 31-May-2012
Fixed: Issue causing the error dialog to not respond to mouse input under specific circumstances (such as when an error occurs from the VBA code behind a label OnClick event).
Update: v2.8.0, 17-Apr-2012
Improved: Re-written the installer for the developer addin so that non-admins can now install vbWatchdog. Installation is now always per-user, with the addin DLL being installed in the %appdata% folder rather than the machines local program files folder.
Update: v2.7.0, 02-Apr-2012
Improved: VBA Addin Installer now correctly installs for each Windows user after being installed from a separate Windows admin account.
Update: v2.6.9, 04-Feb-2012
Fixed: occasional crash on 64-bit VBA on Office 2010 X64 SP1, when an error is triggered from the immediate window.
Update: v2.6.8, 19-Dec-2011
Fixed: ErrEx.CallGlobalErrorHandler would sometimes fail for errors that have already propagated some way up the callstack.
Update: v2.6.7, 29-Oct-2011
Fixed: Support for the 64-bit VBA compiler that is included in the Access 2010 SP1 HOTFIX released yesterday KB2596585 (update 2.6.7 is only required if using 64-bit VBA)
Update: v2.6.6, 07-Oct-2011
Fixed: further fixes as per v2.6.5 but in relation to when an error occurs from inside the designated global error handler.
Update: v2.6.5, 06-Oct-2011
Fixed: propagation issues in class modules under some circumstances (affected OnErrorDebug, OnErrorEnd, OnErrorPropagate and OnErrorGoto0 error states)
Update: v2.6.4, 16-Sep-2011
Fixed: ErrEx.CallGlobalErrorHandler UserData parameter wasn't being copied to the ErrEx.UserData property since v2.6.0.
Update: v2.6.3, 23-Aug-2011
Fixed: Height of the button bar in the HTML dialog was not always being calculated correctly (depending on the default window font).
Fixed: ErrExVariables.Value property would throw an error when returning variable objects that have a default property defined.
Fixed: ErrEx.LiveCallstack was not working due to recent update
Update: v2.6.2, 29-Jul-2011
Fixed: dialog issues when an error was raised within a custom button event procedure of the HTML dialog
Update: v2.6.1, 28-Jul-2011
Fixed: Font resource leak in HTML dialog.
Update: v2.6.0, 25-Jul-2011
Improved: overall performance, particularly in larger projects.
Update: v2.5.0, 08-Jul-2011
Fixed: crash due to new optimizations in the 64-bit VBA7 compiler as of Office 2010 SP1. (Only affects VBA7 64-bit).
Update: v2.4.0, 02-Jul-2011
Improved: Several minor improvements to the HTML dialog (in particular, precision of font width calculations).
Improved: More informative nag screen for the TRIAL edition
Fixed: Bug in variables inspector causing possible crash under extreme circumstances
Fixed: IsDebugable property was not always telling the truth
Updated: Licence agreement
Update: v2.3.6, 23-Apr-2011
Fixed: several minor issues with regards to how the error dialog makes itself modal to all other windows owned by the active process (and it now ensures the dialog is always the foremost window)
Update: v2.3.5, 30-Mar-2011
Fixed: correction to incorrect error state of OnErrorPropagate to OnErrorGoto0 in certain conditions when Application.Run is used to launch a procedure (errors cannot propagate back past the Application.Run call)
Update: v2.3.4, 15-Mar-2011
Fixed: memory leak each time ErrEx.LiveCallstack was used
Update: v2.3.3, 26-Feb-2011
Improved: VBA loader code for increased stability
Update: v2.3.2, 11-Feb-2011
Fixed: vbWatchdog now works correctly even if 'Break on all errors' has been set in the VBE IDE.
Added: boolean property ErrEx.PropagateUnhandledClassErrors for temporarily disabling the OnErrorGoto0 state in class modules (OnErrorPropagate will be forced instead)
Update: v2.3.0, 13-Jan-2011
New: Full support for Office 2010 64bit edition (VBA7 x64)
Improved: VariablesInspector now reports Missing Variant parameters as "Optional-Missing" rather than "#UnsupportedDataType#"
Improved: redesigned sample database
Update: v2.2.0, 10-Nov-2010
Added: ErrExDialogOptions.Timeout property (long). Milliseconds value, defaults to 0 (off). If set to a non-zero value, then the dialog will automatically close after the time has elapsed, returning as if the End button has been pressed (OnErrorEnd is returned).
Added: ErrExDialogOptions.Timedout property (boolean). Indicates if the timeout period elapsed when the the dialog was last shown.
Improved: setting an ErrEx.State of OnErrorExitProcedure (or the equivalent button action) now resumes at the Finally block, if it is defined.
Update: v2.1.2, 09-Nov-2010
Improved: ErrExVariablesInspector.Value property now supports arrays. Note: ValueDesc does not support arrays due to the difficulty in formatting array data for general display purposes.
Update: v2.1.1, 03-Nov-2010
Fix for parsing of #Const code lines.
Update: v2.1.0, 02-Nov-2010
This updates our internal VB code parser to now fully support parsing of conditional compilation code lines. This should now resolve any issues that previously caused line numbers and procedure numbers to not be matched up when using the line numbering addin in the IDE.
Update: v2.0.14, 19-Oct-2010
Fixed: Error dialog display of variable names is now Unicode compliant.
Added: ErrExCallstack::HasResumePoint Boolean property for determining if the procedure in the callstack is currently handling an error.
Update: v2.0.13, 18-Oct-2010
Fixed: Recompiled without SSE CPU requirement
Update: v2.0.12, 05-Oct-2010
Fixed: the Error Dialog now responds to a shutdown request and other close requests by returning OnErrorEnd to the caller rather than being unresponsive.
Improved: ErrEx.Enable allows you to pass the raw address of your on error procedure instead of its name (only suitable for compiled ACCDEs). Pass the address as a hex string preceded by "&H"
Update: v2.0.11, 30-Sep-2010
Re-release of v2.0.10 (due to build process administrative error)
Update: v2.0.10, 22-Sep-2010
Added ErrEx.VerifyOnErrorProcName boolean property, default value: True. Change to False before calling Enable if you don't want vbWatchdog to verify that the procedure name you entered is valid.
Update: v2.0.9, 10-Sep-2010
Fixed: OnErrorPropagate* could fail (and act like OnErrorEnd) under certain conditions
Update: v2.0.7, 09-Sep-2010
Minor bug fix relating to previous update v2.0.6.
Update: v2.0.6, 08-Sep-2010
Fixed: Support for the original Office 2000 VBE6.DLL
Update: v2.0.5, 08-Sep-2010
Fixed: ErrExDialogOptions.DefaultButtonID now Long datatype rather Boolean.
Update: v2.0.4, 07-Sep-2010
Improved: ErrEx.IsDebugable property and OnErrorDebug state to allow debugging when any call in the callstack is debugable (rather than just checking the top level call as per previous versions).
Update: v2.0.3, 07-Sep-2010
Fixed: ErrEx.CallGlobalErrorHandler can now be called from a higher call in the call stack, and it will safely propagate back to the procedure in the callstack that had the last error.
Update: v2.0.2, 06-Sep-2010
Fixed: VariablesInspector crash when a procedure within a class having a class type return value raised an error.