To spot the last row (LR) of data on a given sheet (and you can subtract one from this number if you wish), use variables to find the answers and store them, then use them in your copy commands, something along the lines of:
Dim LR As Long, NR as Long
Dim wsSrc As WorkSheet, wsOut As Worksheet
Set wsSrc = ThisWorkbook.Sheets("invoice list")
Set wsOut = Workbooks("Main Invoices.xls").Sheets("invoice list")
LR = wsSrc.Range("A" & wsSrc.Rows.Count).end(xlUp).Row - 1
If LR > 3 Then
NR = wsOut.Range("A" & wsOut.Rows.Count).End(xlUp).Row + 1
wsSrc.Range("A3:A" & LR).EntireRow.Copy wsOut.Range("A" & NR)
wsSrc.Range("A3:A" & LR).Delete xlShiftUp
End If
This macro goes in the wsSrc workbook. This macro assumes you've already opened the wsOut workbook.
Bookmarks