Вы можете использовать Найти для этого, а также исправить для xlUp
. Кроме того, добавьте в некоторые базовые тесты для not found, последняя строка меньше 5, или productname
пусто.
Option Explicit
Public Sub VBAScanner()
Dim productname As String, finalRow As Long, found As Range, i As Long
productname = ThisWorkbook.Worksheets("Sheet1").Range("D3").Value
If productname = vbNullString Then Exit Sub
With ThisWorkbook.Worksheets("Catalogue")
finalRow = .Range("J3000").End(xlUp).Row
If finalRow < 5 Then Exit Sub
Set found = .Range("J5:J" & finalRow).Find(productname)
End With
If Not found Is Nothing Then
ThisWorkbook.Worksheets("Sheet1").Range("H3").Value = "Mobile Phone"
End If
End Sub