A: 

I have recently picked VBA for one time project. Split your work in to smaller tasks.

Here is how to find given NAME on the sheet wn:

Dim wn as String
Dim COLUMN_WHERE_ID_IS as String

COLUMN_WHERE_ID_IS = "B" 
For srow = 1 To Worksheets(wn).Range("B65536").End(xlUp).row
 If (Worksheets(wn).Range(COLUMN_WHERE_ID_IS & srow & ":" & COLUMN_WHERE_ID_IS & srow).Value = NAME) Then
     '' copy stuff to target you have range now
 Exit For
End If
Next srow

Now make a function that would go through all cells and retrieve NAME, then call above subroutine. Then you need to find how to loop through all sheets.

Mind that it is terribly ineffective. From algorithmic point of view you should put all EMP NUM into Set structure and make check if set.contains(_empnum) during going over any of the sheets.

Gadolin
What is a set structure? Column A are employee numbers, and Column B are names, but I only need names so that when a new employee is added, there is context to the number in column A, names are not needed on the Master Sheet. I'm also confused by your function and how it relates.
Rocka
A: 

I think you have the right idea regarding the code that you have so far. But I would consider using dynamic range names instead to set the list of employee numbers. So you might have as a rangename.

Create a new rangenamed called "EmployeeNum" with the following formula

=OFFSET("EMP_NUM!$A1",0,0,COUNTA("EMP_NUM!$A:$A"),1)

This makes the loop code a little easier to deal with

Sub getEmployeeData()
    Dim rCell As Range
    Dim dblPasteRow As Double

    'Start pasting in first row

    For Each rCell In Range("EmployeeNum")
        dblPasteRow = dblPasteRow + CopyData(rCell.Value, dblPasteRow)
    Next rCell
End Sub

I am using a function to do the copying. Firstly, it splits the code up into the two small jobs you need. Second, a function can return data so we can let the calling sub know how many rows of data we pasted.

Function CopyData(strEmpNum As String, dblPasteStart As Double) As Double

    Dim wksEmployee As Worksheet
    Dim dblEndRow As Double

    'If there is an error, we are adding 0 rows
    CopyData = 0
    'Error handling - if sheet isn't found
    On Error GoTo Err_NoSheetFound
    'Set a worksheet object to hold the employee data sheet
    Set wksEmployee = Sheets(strEmpNum)
    On Error GoTo 0

    With wksEmployee
        'Find the last row on the worksheet that has data in column A
        dblEndRow = .Range("A4").End(xlDown).Row
        'Copy data from this sheet
        Range(.Range("A4"), .Range("T" & dblEndRow)).Copy
    End With

    'Paste data to master sheet - offset to column B
    Range(Worksheets("MASTER").Range("B" & dblPasteStart), Worksheets("MASTER").Range("U" & dblPasteStart + dblEndRow)).Paste
    'Write employee numbers next to the data
    Range(Worksheets("MASTER").Range("A" & dblPasteStart), Worksheets("MASTER").Range("A" & dblPasteStart + dblRowEnd)).Value = strEmpNum

    'Let the calling sub know how many rows we added
    CopyData = dblEndRow

    Exit Function
'Only runs if an error is found
Err_NoSheetFound:
    Debug.Print "Can't find employee number: " & strEmpNum

End Function

I haven't run the code so there could be some bugs in it. I hope it at least points you in the right direction.

Nicholosophy
This looks pretty good... I've hacked and slashed my way through a working solution, but yours is FAR prettier. Now debating on squeezing your code in there, or keeping with what I have. I have another large step to figure out after all of this - thanks for your help!
Rocka