I'm trying to find an id in a list and get it's address, but also deal with a situation if nothing is found.
Here's what I have:
Function find_in_two_ranges_two_sheets(ws1 As String, col1 As Integer) As Range
Dim rows1 As Integer
rows1 = Get_Rows_Generic(ws1, 1)
Dim range1 As Range ' range of first search
With Worksheets(ws1)
Set range1 = .Range(.Cells(1, col1), .Cells(rows1, col1))
End With
Dim found1 As Range
Set found1 = range1.Find("test id", LookIn:=xlValues)
If found1 = Nothing Then
MsgBox "nothing"
Else
MsgBox found1.AddressLocal
End If
Set find_in_two_ranges_two_sheets = range1
End Function
Sub test_stuff()
Dim x As Range
Set x = find_in_two_ranges_two_sheets("usersFullOutput.csv", 1)
MsgBox x.Address
End Sub
When I run test_stuff()
I get an error in the function in the line If found1 = Nothing Then
with the word Nothing
highlighted. "Compile error; Invalid Use of Object". Not sure what to do.
Define the FIND function of VBA Excel. One can specify the direction of search, order of search, data to be searched, the format of the search value, and so on. The FIND function returns the cell containing the specified value. If a match is not found, the function does not return anything.
This method returns Nothing if no match is found. The Find method does not affect the selection or the active cell. The settings for LookIn, LookAt, SearchOrder, and MatchByte are saved each time you use this method.
To check if a cell is empty you can use VBA's ISEMPTY function. In this function, you need to use the range object to specify the cell that you want to check, and it returns true if that cell is empty, otherwise false. You can use a message box or use a cell to get the result.
To find a cell with a numeric value in an Excel Table, set the SearchDirection parameter to either of the following, as applicable: xlNext (SearchDirection:=xlNext): To search for the next match. xlPrevious (SearchDirection:=xlPrevious): To search for the previous match.
To check the range
object you need to use is
instead of =
:
If found1 Is Nothing Then
MsgBox "nothing"
Else
MsgBox found1.AddressLocal
End If
Explanation:
Taken from Allen Browne
Nothing
is the uninitialized state of an object variable. An object cannot be a simple variable such as a number or a string, so it can never be 0 or "". It must be a more comprehensive structure (a text box, form, recordset, querydef, ...)
Since it is not a simple value, you cannot test if it is equal to something. VBA has an Is
keyword that you use.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With