Sub FindAll()
Dim rNames As Range, Name As Range, rFound As Range
Dim lr As Long 'Last row in Wk1
Dim nr As Long ' next available row in New All
Dim i As Integer 'counter for worksheets
Dim sNamesSearched As String 'String to hold values of all names searched for
[COLOR=#ff0000] On Error GoTo errHandle[/COLOR]
[COLOR=#ff0000] Application.EnableEvents = False[/COLOR]
[COLOR=#ff0000] Application.ScreenUpdating = False[/COLOR]
lr = Worksheets("Wk1").Range("A" & Rows.Count).End(xlUp).Row
nr = Worksheets("New All").Range("A" & Rows.Count).End(xlUp).Row + 1
'Get Names range
Set rNames = Worksheets("Wk1").Range("B2:B" & lr)
For Each Name In rNames
If InStr(1, sNamesSearched, Name) > 0 Then GoTo NextName 'if name already searched skip the name
sNamesSearched = IIf(sNamesSearched = "", Name, sNamesSearched & "," & Name) 'record the name searched for
For i = 2 To 5 'loop though worksheets 2 to 5
'find an exact match
Set rFound = Worksheets("Wk" & i).Range("B:B").Find(What:=Name, LookAt:=xlWhole)
If rFound Is Nothing Then 'name not found so don't enter on New All
GoTo NextName
End If
Next i
'only get here if name is found in each sheet
Name.EntireRow.Copy
Worksheets("New All").Range("A" & nr).PasteSpecial xlPasteAll
nr = nr + 1
Application.CutCopyMode = False
NextName:
Next Name
[COLOR=#ff0000] Application.EnableEvents = True[/COLOR]
[COLOR=#ff0000] Application.ScreenUpdating = True[/COLOR]
Exit Sub
[COLOR=#ff0000]errHandle:[/COLOR]
[COLOR=#ff0000] MsgBox Err.Description, vbCritical, Err.Number[/COLOR]
[COLOR=#ff0000] Application.EnableEvents = True[/COLOR]
[COLOR=#ff0000] Application.ScreenUpdating = True[/COLOR]
End Sub