Fix Subscript Out of Range Error in Visual Basic for Applications (VBA)

Updated May 2024: Stop getting error messages and slow down your system with our optimization tool. Get it now at this link
  1. Download and install the repair tool here.
  2. Let it scan your computer.
  3. The tool will then repair your computer.

VBA Subscript out of range error occurs because the object we want to access does not exist. This is a type of error in VBA coding and a “Run Time Error 9”. It is important to understand the concepts to write effective code, and it is even more important to understand the error of your VBA code to debug the code effectively.

If you and your coding error do not know what this error is when you are absent.

A doctor cannot give drugs to his patient without knowing the disease. While the doctor and the patient know that there is a disease (error), it is important to understand the disease (error) as giving her medication. If you fully understand the error, it is much easier to find the solution.

Another reason may be that you do not have a standard printer on your computer. There are several solutions to solve this Runtime Error 9 problem, so try them all in the right order.

Adding a default printer

  1. Connect a printer to your computer, plug in the power cord and turn it on.
  2. Go to “Start” > “Control Panel” > “Printers and Fax Machines”.
  3. Click on “Add Printer” and follow the on-screen instructions to add a default printer.

Check the Arrays

It is possible that you have set an incorrect value for the array element. It is therefore recommended to recheck the value you have defined for the array element and make sure it is correct. Also make sure to check the table declaration and check the upper and lower limits. If the tables have been resized, be sure to use the LBound and UBound functions to condition access. Check the spelling of the variable name if the index is a variable.

Define the Number of Elements

In some cases, you may not have defined the number of elements in your code that will trigger the error. It is recommended to specify the number of elements in the table using the Dim or ReDim functions.

How to avoid the “Out of Range Error Subscript” error in VBA

Avoid using the functions integrated in Excel: ActiveWorkbook, ActiveSheet and Selection: Enter the return values and prefer qualified expressions.

May 2024 Update:

You can now prevent PC problems by using this tool, such as protecting you against file loss and malware. Additionally it is a great way to optimize your computer for maximum performance. The program fixes common errors that might occur on Windows systems with ease - no need for hours of troubleshooting when you have the perfect solution at your fingertips:

  • Step 1 : Download PC Repair & Optimizer Tool (Windows 10, 8, 7, XP, Vista – Microsoft Gold Certified).
  • Step 2 : Click “Start Scan” to find Windows registry issues that could be causing PC problems.
  • Step 3 : Click “Repair All” to fix all issues.


Use the integrated only once and only in the most external macros (subs) and capture when starting the macro, e. g.

set wkb = ActiveWorkbook
set wks = ActiveSheet
Salt set = Selection
During and in macros, these integrated names are not reliable, but the return values are recorded, e. g.

Set wkb = Workbooks.add’ instead of Workbooks.add without entering a return value.
wkb.Activate’ instead of Activeworkbook.Activate
Also try to use qualified expressions, for example

wkb.Sheets(“Sheet3”).name = “foo” ‘ instead of Sheets(“Sheet3”).name = “foo”.

Set newWks = wkb.Sheets.Add. = “bar”‘ instead of = “bar”.
Use qualified expressions, e. g. = “bar”‘ instead of `xyz.Select’ followed by = “bar”.
These methods generally work better, produce less confusing results, are more robust to refactoring (for example, moving lines of code within and between methods), and work better in all versions of Excel. For example, the selection changes differently from one version of Excel to another during the execution of the macro.

Also note that you will probably find that using more qualified expressions does not require you to activate almost as many functions. (This may mean that the screen flashes less for the user.) So the entire Windows(expression) line. Activate could simply be deleted instead of being replaced by wkb. Activate at all.

Expert Tip: This repair tool scans the repositories and replaces corrupt or missing files if none of these methods have worked. It works well in most cases where the problem is due to system corruption. This tool will also optimize your system to maximize performance. It can be downloaded by Clicking Here