Excel 用于从一个变量范围复制到另一个变量范围的宏

Excel 用于从一个变量范围复制到另一个变量范围的宏,excel,vba,copy-paste,Excel,Vba,Copy Paste,我有一列数据,我想将其中四个单元格的区域复制到不同工作表中的另一个区域。这应该是一个循环,每次都会更改要复制的起始单元格 我或多或少对宏编程是新手,无法超越以下代码,这在开始时已经给了我一个编译错误(“子或函数未定义”),我不确定这是什么原因。。。 另外,我有一种感觉,我正在改变我的变量,但实际上并没有将某些东西打印到单元格中 任何帮助都将不胜感激 干杯, 达赖 更新: 答复评论: 每次循环运行时,C1:C4范围将偏移8行。 每次循环运行时,J51单元将偏移1列 我继续尝试并产生了以下代码(尚未

我有一列数据,我想将其中四个单元格的区域复制到不同工作表中的另一个区域。这应该是一个循环,每次都会更改要复制的起始单元格

我或多或少对宏编程是新手,无法超越以下代码,这在开始时已经给了我一个编译错误(“子或函数未定义”),我不确定这是什么原因。。。 另外,我有一种感觉,我正在改变我的变量,但实际上并没有将某些东西打印到单元格中

任何帮助都将不胜感激

干杯, 达赖

更新:

答复评论: 每次循环运行时,C1:C4范围将偏移8行。 每次循环运行时,J51单元将偏移1列

我继续尝试并产生了以下代码(尚未包含循环): 复制和粘贴工作正常。但是,当OneCells更新时,工作表中原始区域的单元格变为空白,OneCells。选择将选择与以前相同的区域

Sub CopyingPeriod2d()

    Dim OneCells As Range
    Set OneCells = Range("C1:C4")

    Worksheets("1").Activate
    OneCells.Select
    Selection.Copy
    Worksheets("New").Activate
    Range("J51").PasteSpecial xlPasteValues

    Worksheets("1").Activate
    OneCells.Select
    ActiveCell.Offset(8, 0).Select
    OneCells = Range(ActiveCell, ActiveCell.Offset(4, 0))
    OneCells.Select

最终,它成功了=)


您能否告诉我们需要复制/粘贴的范围是什么?它们将如何变化?未定义的子或函数位于“工作表(“新”)行中。除非您打算创建一个新工作表(“新”),否则它必须是工作表(“新”),在这种情况下,您需要一些不同的内容。当然,这假设您有一个名为“新”的工作表“如果我错了,有人会纠正我,但我不相信你的活动细胞会在你的循环中发生任何变化,因为除非你告诉它,否则活动细胞不会发生变化。因此,当你启动宏时,你可能会进入一个无限循环,或者你的循环不会启动,这取决于活动单元。嘿,伙计们,谢谢你们的反馈。在一分钟内对编辑后的文章进行彻底更新。
Sub CopyingPeriod2d()

    Dim OneCells As Range
    Set OneCells = Range("C1:C4")

    Worksheets("1").Activate
    OneCells.Select
    Selection.Copy
    Worksheets("New").Activate
    Range("J51").PasteSpecial xlPasteValues

    Worksheets("1").Activate
    OneCells.Select
    ActiveCell.Offset(8, 0).Select
    OneCells = Range(ActiveCell, ActiveCell.Offset(4, 0))
    OneCells.Select
Sub CopyingPeriod2d()

    Dim worksh As Worksheet
    Dim ws As Worksheet
    Dim OneCells As Range
    Dim NewCells As Range

    Set worksh = Sheets("1")
    Set ws = Sheets("New")


'AcCoa data copy
    Set OneCells = worksh.Range("C1:C4")
    Set NewCells = ws.Range("J51")

    i = 1


    'Selection of first cells, else the loop would not run properly since it is checking for the ActiveCell content
    Sheets("1").Activate
    OneCells.Select


    Do Until ActiveCell.Value = ""
        OneCells.Copy

        'Paste to destination and update destination for next iteration of the loop
        NewCells.PasteSpecial xlPasteValues
            If i = 6 Or i = 12 Then
                Set NewCells = NewCells.Offset(0, 3)
            Else
                Set NewCells = NewCells.Offset(0, 1)

            End If
            i = i + 1


        Set OneCells = OneCells.Offset(12, 0)
        OneCells.Select

    Loop