If you're using Excel, you may encounter the “Runtime Error 424” error with message “Object Required”.
This is an error with VBA (Visual Basic for Applications), and basically shows when you're referencing an object which either doesn't exist or is outside the current scope.
If you're seeing the error as someone “developing” any macro / automated functionality in an excel spreadsheet, the likely problem is that you're calling an object “out of context”. This means that you may have loaded an object, but its contents could have been changed or replaced. There are also several other potential issues, fixes for which I'll explain in this tutorial…
The error you'll see will have the following message:
Run-time error ‘424'
To explain why the error shows, and what it means – Microsoft famously released its “Visual Basic” package in the late 90's.
This provided basic capabilities with the system, allowing hobby developers to create simple applications. VB was a big hit.
Because of this, Microsoft introduced “VBA” (Visual Basic for Applications) in their Office suite of software, namely Excel and Word. This allowed developer-types to create automated functionality in Excel spreadsheets, referencing “objects” in the sheet itself etc.
Each time you use Visual Basic, what you're doing is invoking a series of “objects” into memory. These objects are simply variables with a series of extra functionality applied, including custom functions etc. The problem – and this extends through most programming languages – is that if you're referencing an object which has not been invoked, the application will fail.
If you want to fix the problem you need to first ensure the data is present in the system, and then that you're able to reference it correctly. This tutorial will explain how:
1. Ensure You Have Defined Variables Correctly
The primary issue is that you've called a method on a variable (object) which doesn't exist. The most common reason for this is that you've simply misspelled the variable's name, and have thus not declared it in your VBA application. Take the following example:
The above will raise the error because you're trying to call the WorksheetFunction method on an object referenced at “Application33”.
Unfortunately, the Application33 object doesn't exist in memory, preventing your application from being able to load it. To fix this, you need to go through your source code (the erroneous reference will almost always be referenced) and correct any misspelled object names.
2. If Using Excel, Ensure Ranges / Selectors Exist
One of the most common reasons for the error is that you're trying to reference an object or value that doesn't exist. This is a typical issue with the likes of using VLookup or one of the ActiveX objects. If you experience this error, you need to ensure the code is referencing only objects which exist:
Private Sub Test()
This will raise an error
Application.WorksheetFunction.VLookup(TeamName, Range(“TeamNameLookup”), 3, False).Value
The value should be
Application.WorksheetFunction.VLookup(TeamName, Sheets(“YourSheetName”).Range(“TeamNameLookup”), 3, False)
The above means that you're trying to call the various worksheets, and their respective “Range” / “Value” functions without the sheets being found or declared. To fix this, you need to ensure you're calling “Range” or “Value” on the respectively scoped objects.
3. Ensure You Have The Correct Definitions
Finally, one of the more common reasons for the error is that you're not defining your variables correctly.
From incorrectly defining variables as wrong object definitions, to calling “Option Explicit”, it may be the case that you're trying to reference variables / objects which are not defined simply because they haven't been defined properly.
Private Sub Test()
Here you need to explicitly declare the variables before trying to reference / populate them
Dim your_path As String
Set your_path = “x/y/z”
In the example above, if the “your_path” variable is not declared before trying to set it, you will end up with the 424 error (as the “your_path” object doesn't exist). From here, you also need to ensure you're able to call the relevant objects (if you're referencing a worksheet value, you need to ensure the worksheet exists and can be loaded).
Obviously, there are a number of other instances of this error. Because of the specific nature of everyone's code being different, I cannot go through every single potentiality. Hopefully you can see that the error is caused by an invalid variable reference on your system.