复制具有可变范围的行

时间:2017-07-29 15:32:12

标签: vba excel-vba excel

我正在尝试使用变量'r'将表格从表格1复制到表格2。此变量是另一个程序的输出。当我使用下面的代码时,我收到错误的“应用程序已定义”错误。有人可以帮我这个。

Sheets("Sheet2").Range(Sheets("Sheet2").Cells(1, 2)).Value = Sheets("Sheet1").Range(Sheets("Sheet1").Cells(r, 2)).Value
Sheets("Sheet2").Range(Sheets("Sheet2").Cells(2, 2)).Value = Sheets("Sheet1").Range(Sheets("Sheet1").Cells(r + 1, 2)).Value
Sheets("Sheet2").Range(Sheets("Sheet2").Cells(3, 2)).Value = Sheets("Sheet1").Range(Sheets("Sheet1").Cells(r + 2, 2)).Value
Sheets("Sheet2").Range(Sheets("Sheet2").Cells(4, 2)).Value = Sheets("Sheet1").Range(Sheets("Sheet1").Cells(r + 3, 2)).Value

2 个答案:

答案 0 :(得分:2)

你过度复杂,只需使用:

  Sheets("Sheet2").Cells(1, 2).value = Sheets("Sheet1").Cells(r, 2).value
  Sheets("Sheet2").Cells(2, 2).value = Sheets("Sheet1").Cells(r + 1, 2).value
  Sheets("Sheet2").Cells(3, 2).value = Sheets("Sheet1").Cells(r + 2, 2).value
  Sheets("Sheet2").Cells(4, 2).value = Sheets("Sheet1").Cells(r + 3, 2).value

错误是你使用Range方法只有一个单元格作为参数,而它需要两个单元格并返回连接它们的范围。您可以使用它将代码进一步简化为一个语句:

Sheets("Sheet2").Range(Sheets("Sheet2").Cells(1, 2), Sheets("Sheet2").Cells(4, 2)).value = _
  Sheets("Sheet1").Range(Sheets("Sheet1").Cells(r, 2), Sheets("Sheet1").Cells(r + 3, 2)).value

进一步说:

Sheets("Sheet2").Range("B1:B4").value = Sheets("Sheet1").Range("B" & r).Resize(4).value

答案 1 :(得分:0)

您还可以将多个值一次复制到多个区域:

[Sheet1!C1:C4,Sheet1!C6:C9] = [Sheet2!B2:B5].Value