如何复制一行数据,并使用偏移量粘贴它

时间:2013-03-22 15:13:47

标签: excel vba excel-vba excel-2010

我正在制作一份Excel 2010工作表,其中包含一些医生名称及其地址,但通常有两个名称相同但具有不同的地址。在这种情况下,我想将地址信息复制到与第一个名称相同的行,但是偏移为4个列。下面是我提出的代码

Sub OraganizadorEndereços()

    ActiveCell.Select
    If ActiveCell.Value = ActiveCell.Offset(1, 0).Value _
    Then ActiveCell.Offset(1, 0).Activate: _
    Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 4)).Copy: _
    ActiveCell.Offset(-1, 0).Select: _
    ActiveCell.Offset(0, 5).Paste _
    Else ActiveCell.Offset(1, 0).Select

End Sub

但我在

上收到错误
ActiveCell.Offset(0, 5).Paste _
Else ActiveCell.Offset(1, 0).Select

部分代码,说obeject不接受此属性/方法

请记住,我今天开始使用VBA编程,所以如果您能回答一下解释,我将不胜感激。

2 个答案:

答案 0 :(得分:6)

尽量减少对激活和选择单元格的依赖 - 您可以将单元格分配给范围变量以使事情变得更容易。此外,您不需要复制单元格(除非您还想复制格式,例如颜色),请改用它们的.Value:

Sub OraganizadorEndereços()

Dim rngTest as Range 'Define rngTest variable as Range
Set rngTest = Activecell 'Set rngTest to be the ActiveCell
If rngTest.Value = rngTest.Offset(1, 0).Value Then 
    'Replace the .Value of the columns to right with the .Value of the row below
    Range(rngTest.Offset(0,5), rngTest.Offset(0,8).value = Range(rngTest.Offset(1, 1), rngTest.Offset(1, 4)).Value
Else 
    Set rngTest = rngTest.Offset(1,0) 'Set rngTest to be the next line down
End If

End Sub

答案 1 :(得分:2)

尝试以下代码:

Sub OraganizadorEndereços()

    Dim rng As Range
    Dim offsetRng As Range

    Set rng = ActiveCell
    rng.Select

    Set offsetRng = rng.Offset(1, 0)

    If rng = offsetRng Then
        offsetRng.Offset(0, 1).Resize(, 4).Copy offsetRng.Offset(0, 5)
        rng.Offset(1, 0).Activate
    Else
        rng.Offset(1, 0).Select
    End If

End Sub