Run Time Error 9: Subscript Out of Range VBA Macro Fix


  • To fix “Run Time Error 9: Subscript Out of Range,” ensure the index used to access elements in an array is within the valid range and double-check worksheet references.
  • Debug the code by checking array initialization, index validity, syntax errors, and using debugging tools.
  • Prevent subscript errors by checking array bounds, using Option Base 1, avoiding hard-coding array bounds, and checking variable types.
  • Repair and secure Excel files by reviewing VBA code, stepping through the macro, protecting the file with a password, and saving a backup copy.

In this article, I will discuss how to fix the “Run Time Error 9: Subscript Out of Range” in VBA macros.

Understanding Subscript Out of Range Error

VBA Macro code snippet with arrow pointing to line causing error.

To fix this error, you need to ensure that the index you are using to access elements in an array is within the valid range. Check the length of the array and make sure you are not exceeding it.

If you are working with multiple worksheets, make sure you are referencing the correct worksheet in your code. Use the appropriate worksheet name or index to access the data you need.

If you are using a loop to iterate through elements in an array, double-check the loop’s boundaries to avoid going out of range.

When encountering a Subscript Out of Range error, carefully review the line of code that triggered the error and verify the index being used.

By paying attention to these details and ensuring that your code is correctly referencing arrays and worksheets, you can effectively prevent and resolve Subscript Out of Range errors in your VBA macros.

Debugging and Correcting Code

To fix a Run Time Error 9: Subscript Out of Range in a VBA macro, you need to identify where the issue lies. This error typically occurs when the code tries to access an element of an array that doesn’t exist.

First, check the line of code that is causing the error. Ensure that the array is properly initialized and that the index being used is within the bounds of the array.

If the array is being dynamically resized or populated, make sure that the index being accessed is valid based on the current length of the array.

Next, double-check the syntax of the code to ensure there are no typos or mistakes that could be causing the issue.

If the error persists, consider using debugging tools available in Microsoft Excel or Visual Basic for Applications to step through the code and identify the exact line causing the problem.

Once you have identified and corrected the issue, run the macro again to ensure the error no longer occurs. Remember to save your work frequently to avoid losing any progress.

Strategies for Preventing Subscript Errors

  • Check the Array Bounds
    • Make sure the array is properly dimensioned and that the subscript is within the bounds of the array.
  • Use Option Base 1
    • Consider using Option Base 1 at the beginning of your VBA code to set the lower bound of arrays to 1.
  • Avoid Hard-Coding Array Bounds
    • Instead of hard-coding array bounds, use variables or constants to define the upper and lower bounds of arrays.
  • Check Variable Types
    • Ensure that variables are declared with the correct data types to avoid subscript errors.

Repairing and Securing Your Excel Files

To repair and secure your Excel files when encountering a Run Time Error 9: Subscript Out of Range in a VBA Macro, follow these steps:

1. Check for errors in your VBA code. Make sure all variables and arrays are properly declared and initialized.

2. Review the syntax of your code to ensure that all elements are correctly referenced and used within the program.

3. Verify that the array being accessed is within the correct bounds and that the subscript used is valid.

If the error persists, try these additional steps:

4. Double-check the execution of your macro by stepping through the code line by line to pinpoint where the error occurs.

5. Protect your Excel file with a password to prevent unauthorized access and modifications.

6. Consider saving a backup copy of your workbook to prevent data loss in case of any unexpected errors.


How do I fix runtime error 9 ‘: subscript out of range in VBA?

To fix runtime error 9 ‘: subscript out of range in VBA, you can assign the length of an array using the “ReDim” keyword. This will prevent the error from occurring.

How do I fix runtime error in Excel VBA?

To fix a runtime error in Excel VBA, you can follow these steps:
1. Check the VBA code for any errors.
2. Search for and delete GWXL97.
3. Verify the macro security settings.
4. Check the Excel file permissions.
5. Try repairing the workbook.

What does subscript out of range mean in Excel?

Subscript out of range in Excel means that the array being referenced does not have the element or size that is being called for. For example, if the error is on the Sheets(name) line, it indicates that there is no sheet with that specific name.