在 VBA 中使用自动填充时如何更改目标范围

How to change destination ranges when using autofill in VBA

我是 VBA 的新手,我正在制作一个宏,它将数据从 'Sample' 工作簿复制到 'Etracker' 工作簿。将单元格 "H11" 从 'Sample' 复制到 Etracker 中 C 列的最后一行后,我希望 C 列自动填充到数据位于 J 列中的位置。该代码有效,但现在显示 "C16926" 的地方,它每次都会更改,因为我不断向其中输入数据。所以我想一直从 C 列的最后一行自动填充它。 我尝试了不同的方法来改变 "C16926" 以改变但它似乎不起作用。 请帮忙!提前致谢。

LastrowC = Etracker.Cells(Rows.Count, 3).End(xlUp).Offset(1, 0).Row
LastrowJ = Etracker.Cells(Rows.Count, 10).End(xlUp).Offset(1, 0).Row

Sample.Activate
Range("H11").Copy
Etracker.Cells(LastrowC, 3).PasteSpecial xlPasteValues
Etracker.Activate
Etracker.Range("C" & LastrowC).Select
Selection.AutoFill Destination:=Range("C16926:C" & Range("J" & Rows.Count).End(xlUp).Row), Type:=xlFillCopy

您只需要将最后一行连接到地址

"C" & LastrowC & ":C" & Range("J" & Rows.Count).End(xlUp).Row)

请注意,如果您为 every Range, [=15] 指定一个工作表,则不需要 .Select.Activate =]、RowsColumns 对象。使用 .Select.Activate 非常不可靠,会使您的代码非常慢。

所以你应该得到类似

的结果
Dim LastRowC As Long
LastrowC = Etracker.Cells(Etracker.Rows.Count, "C").End(xlUp).Offset(1, 0).Row

Dim LastrowJ As Long
LastrowJ = Etracker.Cells(Etracker.Rows.Count, "J").End(xlUp).Offset(1, 0).Row

Sample.Range("H11").Copy
Etracker.Cells(LastrowC, "C").PasteSpecial xlPasteValues

Etracker.Range("C" & LastrowC).AutoFill Destination:=Etracker.Range("C" & LastrowC & ":C" & LastrowJ), Type:=xlFillCopy