The #Const
directive is used to define a custom preprocessor constant. These can later be used by #If
to control which blocks of code get compiled and executed.
#Const DEBUGMODE = 1
#If DEBUGMODE Then
Const filepath As String = "C:\Users\UserName\Path\To\File.txt"
#Else
Const filepath As String = "\\server\share\path\to\file.txt"
#End If
This results in the value of filepath
being set to "C:\Users\UserName\Path\To\File.txt"
. Removing the #Const
line, or changing it to #Const DEBUGMODE = 0
would result in the filepath
being set to "\\server\share\path\to\file.txt"
.
#Const Scope
The #Const
directive is only effective for a single code file (module or class). It must be declared for each and every file you wish to use your custom constant in. Alternatively, you can declare a #Const
globally for your project by going to Tools >> [Your Project Name] Project Properties. This will bring up the project properties dialog box where we’ll enter the constant declaration. In the “Conditional Compilation Arguments” box, type in [constName] = [value]
. You can enter more than 1 constant by separating them with a colon, like [constName1] = [value1] : [constName2] = [value2]
.
Pre-defined Constants
Some compilation constants are already pre-defined. Which ones exist will depend on the bitness of the office version you're running VBA in. Note that Vba7 was introduced alongside Office 2010 to support 64 bit versions of Office.
Constant | 16 bit | 32 bit | 64 bit |
---|---|---|---|
Vba6 | False | If Vba6 | False |
Vba7 | False | If Vba7 | True |
Win16 | True | False | False |
Win32 | False | True | True |
Win64 | False | False | True |
Mac | False | If Mac | If Mac |
Note that Win64/Win32 refer to the Office version, not the Windows version. For example Win32 = TRUE in 32-bit Office, even if the OS is a 64-bit version of Windows.