创建循环

时间:2013-09-05 12:53:16

标签: excel-vba vba excel

我录制了一个宏来引用Sheet1上的数据并将其拉到Sheet2。

我需要继续,直到Sheet1(或第209行)上没有更多数据。

Sub Macro1()
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "=Sheet1!RC"
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "=Sheet1!R[-1]C"
    Range("A3").Select
    ActiveCell.FormulaR1C1 = "=Sheet1!R[-2]C"
    Range("A4").Select
    ActiveCell.FormulaR1C1 = "=Sheet1!R[-2]C"
    Range("A5").Select
    ActiveCell.FormulaR1C1 = "=Sheet1!R[-3]C"
    Range("A6").Select
    ActiveCell.FormulaR1C1 = "=Sheet1!R[-4]C"
    Range("A7").Select
End Sub

1 个答案:

答案 0 :(得分:0)

从您的代码看起来,您只是从Sheet1复制并粘贴到Sheet2,但是对于Sheet2中的每一行,您在Sheet1中向上移动一行。换句话说,"=Sheet1!R[-x]C"使得它看起来像是在x行上升。

您的代码显示的是逐步选择每个单元格然后更改它的过程。为什么不一次完成这一切without the .Select statments

例如,For...Next循环可以执行此操作:

For i = 1 To 209
  Worksheets("Sheet2").Cells(210 - i, 1).Value = _
    Worksheets("Sheet1").Cells(i, 1).Value
Next

直接复制单元格的内容(.Value属性)。