Frequently Asked Questions

 PLEASE NOTE: SimplyVBA and SimplyVB6 have been superseded by vbWatchdog.
This page exists for archival purposes only.  
Upgrade licences of vbWatchdog are available at a discounted rate.


If your questions are not answered here, please contact us.

What versions of VBA is SimplyVBA Global Error Handler compatible with?

All versions from v6 onwards (from original Office 2000 right up to the latest Office 2010) are currently supported.

The .DLL is designed universally and should continue to work with any future releases of VBA6 or VBA7 without issue. In the unlikely event that a future version of VBA breaks compatibility then we will release an updated version of SimplyVBA Global Error Handler to fix the issue(s) free of charge.

What versions of VB is SimplyVB6 Global Error Handler compatible with?

All revisions of VB6 are supported.

VB.NET is NOT supported.

What benefits do we get from using your Global Error Handler?

Well, where do I start?

You get access to the VBA call stack (to find out the location of error and how that subroutine was called).
You get access to an automatic line numbering system that is already built-in to your compiled code (no code bloating).
You get access to the live local variable values within the procedure of error so that you can dump the memory contents for enhanced debugging
You can create professional error dialogs using the built in Vista-style API.
You get complete control over handling all errors.

Furthermore, to implement these features is so easy - take a look at our Tips: Converting existing code

What license options are available?

There are currently two licenses available:

DEVELOPER EDITION (VBA Only) which is a free version but cannot be used for commercial purposes. Furthermore, you are not allowed to redistribute this edition. There are minor limitations in this edition - see the license details for exact differences.

DISTRIBUTABLE EDITION which is the version you need if you need to distribute the .DLL or if your product is for any commercial purpose.

Full licensing information and pricing is available here: License & Download

What is ErrEx?

ErrEx is a global class object that is used as a replacement for the built-in Err function in VBA.  It is also the object you use for enabling and disabling your global error handler.

ErrEx exposes all the new features such as the callstack, line numbering and variables inspector.

Read more here: QuickStart: The ErrEx function

Does the distributable edition require a registration code upon install?

No - the Distributable Edition is designed so that you can automate the install process into your own installer packages. Simply copy over the VBAGlobalErrorHandler.DLL and register it (it's a self-registering COM library).

Alternatively you might want to consider using the registry-free installation option that doesn't require the DLL to be registered at all.

Does this product affect performance of my application in any way?

No, not during normal application program flow. There is of course a small overhead when an exception occurs for retrieving the advanced information from the callstack and live variable values, but in reality this overhead is so small it's negligable.

Can this product be used alongside your MDE Source Code Protector software?

Yes, absolutely. However, the features of the VariablesInspector are not available since variables debug information has been removed by the MDE Protector. It is advised in this situation to turn off the VariablesInspector support by setting ErrEx.VariablesInspectorEnabled property to False.

Can I enumerate through the callstack and variables collections using a Forů Each loop?

As of v1.4.0, yes you can.

The For...Each way of enuerating through collections, doesn't ideally fit the way that our collections are exposed in SimplyVBA Global Error Handler which is why we hadn't implemented this functionality before.

However, due to popular demand, we now give you the option of using the For...Each method, although not entirely as you would normally implement it.

To use it, you need to declare a dummy variable of type Object and use that as the For Each control variable. Note: The dummy variable will always contain Nothing - it is not meant to be used, in this instance. Continue to access the methods and properties using the normal ErrEx.CallStack or equivalent interfaces.


    Dim Dump As String
    Dim DummyElement As Object
    Dim DummyElement2 As Object
    With ErrEx
        For Each DummyElement In .CallStack
            With .CallStack
                Dump = Dump & .ProcedureName & vbCrLf & "--------------------------------" & vbCrLf
                For Each DummyElement2 In .VariablesInspector
                    With .VariablesInspector
                        Dump = Dump & .Name & " = " & .ValueDesc & vbCrLf
                    End With
                Dump = Dump & vbCrLf
            End With
    End With
    MsgBox Dump