Пожалуйста, попробуйте что-то вроде этого ...
Sub Button3_Click()
Dim ws As Worksheet, wsCriteria As Worksheet
Dim strSearch As String
Dim rng As Range
If SheetExists("Auspost_Data") Then
Set ws = Worksheets("Auspost_Data")
Else
MsgBox "There is no Sheet called " & ws.Name & " in the ActiveWorkbook.", vbCritical, "Sheet Not Found!"
Exit Sub
End If
If SheetExists("Report_Tool") Then
strSearch = Worksheets("Report_Tool").Range("D11")
Else
MsgBox "There is no Sheet called Report_Tool in the ActiveWorkbook.", vbCritical, "Sheet Not Found!"
Exit Sub
End If
If strSearch = "" Then
MsgBox "Search string is empty, there is nothing to find.", vbExclamation, "Empty Search String!"
Exit Sub
End If
Set rng = ws.Range("D:D").Find(what:=strSearch, LookIn:=xlValues, lookat:=xlWhole)
If Not rng Is Nothing Then
MsgBox "The search string " & strSearch & " is found in the cell " & rng.Address(0, 0) & ".", vbInformation, strSearch & " Found!"
Else
MsgBox "The search string " & strSearch & " was not found.", vbExclamation, strSearch & " Found!"
End If
End Sub
Function SheetExists(shName As String) As Boolean
Dim sh As Worksheet
On Error Resume Next
Set sh = Worksheets(shName)
On Error GoTo 0
If Not sh Is Nothing Then SheetExists = True
End Function
Чтобы выбрать диапазон, если он найден:
Заменить последний оператор IF этим ...
If Not rng Is Nothing Then
ws.Select
rng.Select
Else
MsgBox "The search string " & strSearch & " was not found.", vbExclamation, strSearch & " Found!"
End If
Обратите внимание, что я удалил MsgBox, если найден rng, который, я думаю, здесь не нужен, особенно когда код выбирает найденный rng.