- Encountering the VBA runtime error 1004 is not a good sign, but this article could prove helpful.
- This error implies that you won't be able to use MS Excel normally, which can cause a variety of issues at work.
- For more useful and detailed information, don't hesitate to visit our extensive Microsoft Excel Hub.
- If you want to always be one step away from runtime errors, bookmark our useful Runtime Errors webpage.
If you work in an organization, you most probably have the latest version of the Microsoft Office suite or Office 365 installed on your PC.
Even if this one of the best spreadsheet tools in the market, this doesn’t make Microsoft Excel immune to occasional bugs. This would be the case with an error message users have been reporting: Run time error 1004. Application-defined or object-defined error.
How can I fix the VBA runtime error 1004?
1. Check your Excel add-ins
- Click File -> Options ->Select Add-ins
- Click the Go button
- Select the add-ins you want to disable or remove
- Uncheck the box in front of the respective add-in
- Click OK
2. Verify Excel or install the latest updates
- Right-click the Start button
- Select Apps and Features on the pop-up menu.
- Select the Microsoft Excel, and select Modify
Depending on whether your copy of Office is Click-to-run or MSI-based install, the next steps will vary a little.
A window called How would you like to repair your Office Programs will appear
- Select Online Repair
- Choose Repair to make sure everything gets fixed
- In Change your installation, select Repair
- Click Continue
- Follow the given instruction to complete the process
3. The named range doesn’t exist
The most common cause of a run-time Error 1004 is when VBA code refers to a named range that doesn’t exist. Maybe the name is spelled wrong in the code or maybe a valid name is used, but it is on an inactive worksheet. In this second case, the solution is to qualify the range reference with a worksheet (and perhaps the workbook).
- Worksheet Sheet1 is active, named range Foobar is on Sheet2
- Dim cel As Range
- Set cel = Range(“Foobar”) ‘Causes run–time error 1004
- Set cel = Worksheets(“Sheet2”).Range(“Foobar”) ‘This works
A less common cause of 1004 errors is when you use a named formula or constant in a Range statement. VBA complains because the named formula or constant returns a value rather than a range reference. The workaround is to use the evaluate method to get the value, such as by enclosing in square brackets:
- Dim MyVar As Double
- Dim cel As Range
- Set cel = Range(“SomeNamedConstant”) ‘Causes run-time error 1004
- MyVar = [SomeNamedConstant] ‘This works.
Note the lack of double-quotes
4. Check the contents of the spreadsheet
- Inserting a row or column
- Performing calculations
- Copy and pasting
- Opening or closing the workbook
If you are doing any of the actions mentioned above and you receive the error, check what exactly is wrong. If that is the case, try doing the following:
- Recheck the formulas
- Recheck the calculations
- Avoid using excess shapes
- Avoid using complex PivotTables
- Try not to use macros and complex charts with many data points
In today’s guide, we explored the best solutions that you can try to fix the VBA runtime error 1004.
If you found this article helpful or you have any suggestions, get into contact with us by using the comment section below.
FAQ: Learn more about VBA for Excel
- What is VBA in Excel?
VBA stands for Visual Basic for Applications. Excel VBA is Microsoft’s programming language for Excel.
- What types of errors are common to VBA?
There are three types of VBA errors that you may encounter when executing an Excel macro. These compile errors, runtime errors, and logical errors (bugs).
- What are Runtime Errors?
Runtime errors occur during the execution of your code and cause the code to stop running. Check out our detailed Excel runtime error fix article.