Распространенная проблема в Excel-VBA: вы не указали Range("A3")
. Хотя кажется очевидным, что вы хотите получить доступ к диапазону от DataPivotSheet
, Excel не сделает этого, если вы не скажете. Вместо этого он будет использовать Range из active workbook, который, вероятно, не является DataPivotSheet
.
Вы можете написать
DataPivotSheet.Range("J3", DataPivotSheet.Range("A3").End(xlDown)).Copy _
Destination:=YTDDataTableSheet.Range("A" & Startrow)
или, может быть, лучше прочитать (отметьте точку перед Range
)
With DataPivotSheet
.Range("J3", .Range("A3").End(xlDown)).Copy _
Destination:=YTDDataTableSheet.Range("A" & Startrow)
End With
или, чтобы разделить ваше довольно сложное copy
заявление (облегчает отладку)
With DataPivotSheet
Dim endCell As Range
Set endCell = .Range("A3").End(xlDown)
.Range("J3", endCell).Copy Destination:=YTDDataTableSheet.Range("A" & Startrow)
End With
Практическое правило : Никогда не входите в Range
без dot
. Даже , если вы хотите получить доступ к диапазону от ActiveSheet
(и вам это не понадобится очень часто), лучше написать ActiveSheet.Range