It is generally not considered 'best practice' to re-purpose the reserved names of Properties or Methods as the name(s) of your own procedures and variables.
Bad Form - While the following is (strictly speaking) legal, working code the re-purposing of the Find method as well as the Row, Column and Address properties can cause problems/conflicts with name ambiguity and is just plain confusing in general.
Option Explicit Sub find() Dim row As Long, column As Long Dim find As String, address As Range find = "something" With ThisWorkbook.Worksheets("Sheet1").Cells Set address = .SpecialCells(xlCellTypeLastCell) row = .find(what:=find, after:=address).row '< note .row not capitalized column = .find(what:=find, after:=address).column '< note .column not capitalized Debug.Print "The first 'something' is in " & .Cells(row, column).address(0, 0) End With End Sub
Good Form - With all of the reserved words renamed into close but unique approximations of the originals, any potential naming conflicts have been avoided.
Option Explicit Sub myFind() Dim rw As Long, col As Long Dim wht As String, lastCell As Range wht = "something" With ThisWorkbook.Worksheets("Sheet1").Cells Set lastCell = .SpecialCells(xlCellTypeLastCell) rw = .Find(What:=wht, After:=lastCell).Row '◄ note .Find and .Row col = .Find(What:=wht, After:=lastCell).Column '◄ .Find and .Column Debug.Print "The first 'something' is in " & .Cells(rw, col).Address(0, 0) End With End Sub
While there may come a time when you want to intentionally rewrite a standard method or property to your own specifications, those situations are few and far between. For the most part, stay away from reusing reserved names for your own constructs.