从一个工作表到另一个工作表的VBA复制/粘贴动态范围

时间:2018-08-31 09:28:32

标签: excel vba excel-vba copy-paste

我正在尝试从单元格bottom_0cm_Box_45_B_135_amplitude.txtbottom_0cm_Box_45_B_135_wave_1.txtwsCL2中的A复制数据,直到数据结束;行数可以变化。

我想从该列的下一个空单元格粘贴到A2的{​​{1}}列中。

A

尝试coSummary方法时,有时会引发错误;其他时候它将正常执行。

我怀疑这与刷新Sub Test() Dim wb As Workbook Dim wsCL2 As Worksheet Dim summary As Worksheet Dim colLastRow As Long Dim summaryLastRow As Long Set wb = ActiveWorkbook Set wsCL2 = wb.Sheets("Tocopyfrom") Set summary = wb.Sheets("Summary") 'Defining last row of data in Colliers summaryLastRow = summary.Cells(Rows.Count, 1).End(xlUp).Row colLastRow = wsCL2.Cells(Rows.Count, 1).End(xlUp).Row summary.Cells(10, 10).Value = colLastRow summary.Cells(11, 10).Value = summaryLastRow 'Copying range from Colliers to Summary Page (***ERROR HERE***) wsCL2.Range(Cells(2, "A").Address(), Cells(colLastRow, "A")) _ .Copy summary.Cells(summaryLastRow + 1, "A") colLastRow = summary.Cells(Rows.Count, 1).End(xlUp).Row End Sub 值或Copy的值有关?

谢谢!

1 个答案:

答案 0 :(得分:1)

您在此代码行中遇到问题:

wsCL2.Range(Cells(2, "A").Address(), Cells(colLastRow, "A")).Copy summary.Cells(summaryLastRow + 1, "A")

您使用了许多“单元”,这些单元不引用wsCL2,而是引用您的ActiveSheet,这可能不是您想要的。 这是正确的方法:

wsCL2.Range(wsCL2.Cells(2, "A").Address(), wsCL2.Cells(colLastRow, "A")).Copy summary.Cells(summaryLastRow + 1, "A")

为了更好地理解,这实际上是您的代码在说什么:

wsCL2.Range(ActiveSheet.Cells(2, "A").Address(), ActiveSheet.Cells(colLastRow, "A")).Copy summary.Cells(summaryLastRow + 1, "A")

编辑:我也不确定您如何使用这些引用 一次使用.Address:Cells(2,“ A”)。Address() 然后没有:单元格(colLastRow,“ A”) 我认为参考范围的一种更好方法是仅使用数字:

wsCL2.Range( wsCL2.Cells(2,1), wsCL2.Cells(colLastRow,1) )

最终编辑: 另一件事,如果您厌倦了编写wsCL2。

with wsCl2
  .Range( .Cells(2,1), .Cells(colLastRow,1) )
end with