Hello friscokid,
This version of your macro takes advantage of the Range Objects properties and methods to eliminate the need for nested looping and a dynamic array. This code can be modified to find multiple occurances of the substring quite easily, if you need that feature later.
Sub find_term_position()
Dim ProdsRng As Range
Dim termPos As Integer
Dim TermsRng As Range
Dim wsProds As Worksheet
Dim wsTerms As Worksheet
Set wsProds = Worksheets("products")
Set wsTerms = Worksheets("terms")
Set ProdsRng = wsProds.Cells(1, "A").CurrentRegion.Resize(Columnsize:=1)
Set TermsRng = wsTerms.Cells(1, "A").CurrentRegion.Resize(Columnsize:=1)
For Each Prod In ProdsRng
Set Term = Terms.Find(What:=Prod, _
After:=Terms.Cells(1, 1), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchBy:=xlRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not Term Is Nothing Then
termPos = InStr(1, Prod, Term.Text)
If termPos > 0 Then
Prod.Offset(0, 1) = "Term found at: " & termPos
Else
Prod.Offset(0, 1) = "Term not Found"
End If
End If
Next Prod
End Sub
Sincerely,
Leith Ross
Bookmarks