Here's one approach:
Sub PrintAllEngineerSheets()
Dim wsSrc As Worksheet
Dim wsTgt As Worksheet
Dim vSrc()
Dim vtgt()
Dim lRow As Long
Dim i As Integer
On Error GoTo Terminate
Set wsSrc = Worksheets("Job Data")
Set wsTgt = Worksheets("Engineer Sheet")
'Extend ranges as required - keep in order, to map from Src to Tgt
vSrc = Array("C1", "D1", "E1", "F1")
vtgt = Array("B7", "B8", "A9", "H11")
With wsSrc
For lRow = 1 To .Cells(Rows.Count, 1).End(xlUp).Row - 1
For i = LBound(vSrc) To UBound(vSrc)
wsTgt.Range(vtgt(i)).Value = wsSrc.Range(vSrc(i)).Offset(lRow, 0).Value
Next i
wsTgt.PrintPreview 'change to wsTgt.PrintOut to print directly without preview
For i = LBound(vtgt) To UBound(vtgt)
wsTgt.Range(vtgt(i)).MergeArea.ClearContents
Next i
Next lRow
End With
Terminate:
If Err Then
Debug.Print "Error", Err.Number, Err.Description
Err.Clear
End If
End Sub
Bookmarks