Согласно комментарию, непосредственной причиной вашей ошибки было то, что ваш параметр After
был задан как ячейка за пределами диапазона поиска.
Ниже я полностью удалил его, так как в общем он не нужен ( по крайней мере, на первый взгляд в этом случае).
Вы также можете избегать выбора .
И всегда проверять, что ваш Find
что-то находит, прежде чем воздействовать на результат, чтобы избежать ошибка.
Sub Save_Data_on_Master_Sheet()
Dim Str As String, rfnd As Range
With Sheets("MASTER_DATA")
Str = .Range("P2").Value
Set rfnd = .Range("D5:D2000").Find(Str, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not rfnd Is Nothing Then rfnd.EntireRow.Delete
End With
End Sub