VBA Option Explicit
Declaring Option Explicit at the top of your code module tells VBA to require that you declare all the variables which you are using in the code. If this command is omitted, you can use variables which you haven’t declared. We recommend using the Option Explicit at the top of your module, as it helps you to avoid mistyping of the variables.
Using VBA Variables without Option Explicit
We will first show the example of the code when there is no Option Explicit command. Here is the code:
Private Sub ExampleWOOptionExplicit()
Dim strTextA As String
strTextA = "Testing VBA without Option Explicit"
MsgBox strTextA
End Sub
In the example, we declared the variable strTextA in the first row of the procedure and assigned it the text. After that, we want to return the message box with the value of strTextA. Here is the result when we run the code:
Image 1. The code without Option Explicit
As you can see in Image 1, the code is successfully executed. The message box with the value from strTextA appeared, even though we didn’t declare variable strTextA. Here there is no problem with the code, but what if we had misspelled the variable name:
MsgBox strTxtA
Here we wrote strTxtA (without an “e”) instead of strTextA. As a result we get a blank message box, because the variable strTxtA was not defined. Now we will see how to use Option Explicit to prevent errors.
Using the Variables with Option Explicit
If you want to prevent using variables that are not declared, you have to enter Option Explicit at the top of your module:
Option Explicit
Here is the complete code, including the typo:
Option Explicit
Private Sub ExampleWithOptionExplicit()
Dim strTextA As String
strTextA = "Testing VBA without Option Explicit"
MsgBox strTxtA
End Sub
Let’s see what happens if we run the code:
Image 2. The code with Option Explicit
As a result, we get the error “Variable not defined”, because we didn’t declare the strTxtA variable.
Adding Option Explicit at the top of your code modules helps prevent errors from misspelled variables.
If you want to learn more about VBA other VBA options, learn about how to make VBA case-insensitive: Prevent VBA Case Sensitive