Поскольку вы используете блок With
, вам не нужно использовать .Activate
.
Сначала вы вычисляете последнюю строку, а затем вычитаете 3 при взятии первой ячейки:
Option Explicit
Sub LastThree()
With Sheets("DATA")
' Adds titles to forecast columns
.Range("I1") = "Production Forecast"
.Range("J1") = "Demand Forecast"
.Range("K1") = "Inventory Forecast"
Dim LastRow As Long: LastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
.Range(.Cells(LastRow - 2, 2), .Cells(LastRow, 2)).Copy
End With
End Sub