Try something like this. Tweak as needed.
Option Explicit
Sub TestDogs()
Dim dogBreed As String
Dim dogName As String
Dim dogLoc As String
Dim rngFound As Range
Dim wsMaster As Worksheet
Dim wsNew As Worksheet
Dim rng As Range
Dim arrDogs() As String
Dim i As Long
Set wsMaster = Worksheets("List") '<modify as needed.'
wsMaster.Activate
Range("A1").Activate
dogBreed = InputBox("Enter the breed", "Dog Breed", "Lab")
dogLoc = InputBox("Enter the location", "Dog location", "New York")
Set rng = Range("A1", Range("a1").End(xlDown))
Range("A1").Activate
Do
'use the .Find method to look for dog breed in column A'
Set rngFound = rng.Find(What:=dogBreed, After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=True, SearchFormat:=False)
If Not rngFound Is Nothing Then
rngFound.Activate
'Check to see if the Location matches:'
If rngFound.Offset(0, 2).Value = dogLoc Then
dogName = rngFound.Offset(0, 1).Value
'If so, then add to the array'
ReDim Preserve arrDogs(i)
arrDogs(i) = dogName
i = i + 1
If i >= Application.WorksheetFunction.CountIf(rng, dogBreed) - 1 Then Exit Do
End If
Else: Exit Do
End If
'Loop, the counter variable "i" will exit this loop when necessary.
Loop
If UBound(arrDogs) >= 0 Then
'Add a new sheet if any matches were found
Set wsNew = Sheets.Add(After:=wsMaster)
With wsNew
'Give the sheet a meaningful name.'
.Name = Left(dogBreed & " - " & dogLoc, 31)
'Print out the dog names on the new sheet'
.Range("A1", .Range("A1").Offset(UBound(arrDogs), 0)).Value = WorksheetFunction.Transpose(arrDogs)
End With
Else:
MsgBox "No dogs matching criteria [Breed =" & dogBreed & "] and [Location =" & dogLoc & "]", vbInformation
End If
End Sub