VBA Global Variables

VBA Global Variables / Program-Wide Data Storage

VBA Global variables are a powerful feature in Microsoft Access. There are two levels of these Visual Basic global variables:

  • Local variables defined in a form instance, usually when the form opens. These variables persist as long as the form remains open. These variables and constants are also known as Public Variables and Public Constants since they are known only to the form and subforms attached to a main form.
  • Instance-wide variables persist for the duration of the Microsoft Access database session.  These variables, including global constants, are defined in association with a module and become active as soon as the module is called.

Here’s an example of the Visual Basic code required to setup public form-level global variables:


Public gbl_previous_tab As String
Public gbl_username As String
Option Explicit

Private Sub Form_Open(Cancel As Integer)
‘ doing something here
End Sub

As this example show the declaration of a database global variable come right after the ‘Option Compare Database’ statement and before all declarations of (any) subroutines and functions within the form.

The definition of instance-wide Access global variables is carried out in a module.  The following is the code we use to initialize our VBA global variables:


‘ Access global variables definition
Global GBL_Username As String
Global GBL_Previous_Tab As String

Option Explicit

Public Sub Init_Globals()
‘ Access global variable initialization
GBL_Username = Environ(“username”)
GBL_Previous_Tab = ” ”
End Sub

Then we make a call to the Init_Globals subroutine in our first-opening form as follows:

Option Explicit

Private Sub Form_Open(Cancel As Integer)
Call Init_Globals
End Sub

As you can see there are many things you can keep track of with Access global variables. You can also do some neat tricks – like passing parameters to SQL queries using global variables.

Try our downloadable Access database demonstration of using Global variables as query parameters.

All that said… global variables can be volatile and will be lost if your database VBA code has an unhandled error condition. So, unless you are very careful with your VBA coding and ALWAYS have error handlers then you may find it easier and safer to use a persistent form in your database with fields (which can be hidden) to store values you want to keep track of and pass to sql queries, forms and vba code.

More Global Variable examples:

Global Variables as Query Parameters
Using global variables to pass user selection criteria to queries is a useful programming technique to master. This Access download will provide you with …

Access Database Download: Access Security Alternative
Access Example Download, Download Access Examples Free. Home > Tutorials > Access Example Downloads … Set global variables. Use the Dlookup function …

Access Database Security Alternative
initialize global variables Call set_globals ‘ Hide tabs Me.TabCtl0.Pages. … set global access level to failsafe no access then lookup access level …

Visual Basic Tutorials:

Access-Google EarthAge CalculationChange To Proper CaseEmail via Gmail #1
Send Gmail Email #2Inactivity Logout CodeOutlook EmailRead Email Access
Email AttachmentSend Outlook EmailRunning SumDenormalize Records
Stock QuotesCreateQueryDefFind Database PathDetail-Master Update
Data Field ValidationField Value New-OldFindFirstAccess Version
Global Variable ParameterGlobal VariablesActive LabelsFiles List Box
Mail MergeQuick SortSelect CaseAccess Transactions