Не очень понятно, что именно делает код не работающим. Я думаю, что некоторые ярости не вызваны его родительским листом.
Кроме того, всегда лучше избегать WorksheetFunction, если у вас есть функция VBA, которая может делать то же самое.
И найти последнюю строку можно гораздо лучше, используя End()
method.
Вот как:
Sub incrementInvoiceNumber()
Dim i As Long
Application.ScreenUpdating = False
Sheets("Sheet1").Range("A1").Value = _
Format(Date, "YYYYMMDD") & Format(Sheets("Sheet1").Range("A1").Value + 1) 'Make sure Sheet1 is the sheet with the value. Fix it if otherwise
With Sheets("Sheet2")
i = .Cells(.Rows.Count, 1).End(xlUp).Row
If Not IsEmpty(.Cells(i, 1)) Then i = i + 1
.Cells(i, 1).Value = Sheets("Sheet1").Range("A1").Value
End With
Application.ScreenUpdating = True
End Sub
Cells(Rows.Count, 1).End(xlUp)
означает ячейку, которую вы достигнете, если вы начнете с последней ячейки в столбце A («A1048576») и нажмете Ctrl + Стрелка вверх.