The xlDown can be hinky that way - the last row in B is for the sheet in play but if the sheet in play is not the active sheet then it can vary wildly - better to use Norie's solution, which is the way I would have answered:

Set InvoiceNameRng = _
ThisWorkbook.Worksheets("Sage Import").Range("B2:B" & _
Sheets("Sage Import").Range("B" & Rows.Count).End(xlUp).Row)
This code, like Norie's tells the program exactly where to get the row count