vba - 如何复制一行数据,并以偏移量粘贴它

标签 vba excel excel-2010

我正在制作一个 Excel 2010 工作表,其中包含一些医生的姓名及其地址,但经常有 2 个姓名相同但地址不同的情况。在这种情况下,我想将地址信息复制到与名字相同的行,但偏移量为 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

部分代码,表示该对象不接受此属性/方法

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

最佳答案

尽量减少对激活和选择单元格的依赖 - 您可以将单元格分配给范围变量以使事情变得更容易。另外,您不需要复制单元格(除非您还想复制格式,例如颜色),而是使用它们的 .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

关于vba - 如何复制一行数据,并以偏移量粘贴它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15573778/

相关文章:

java - 使用 Apache POI 将列标签插入数据透视表?

vba - Excel VBA 未保存在当前目录中

excel - Visual Basic 如果事件单元格包含文本 "a"然后将 1 插入到右侧的单元格中

excel - 无法单击 ActiveX 控件和表单控件 Excel 2010

perl+ VBA : raise click event on a button embedded in a Powerpoint slide

excel - 如何控制 VBA 类何时终止

vba - 从网页中提取数据 - 使用 VBA

vba - Excel Shapes.Range(Array ("someName")) - 定义的范围是什么?

excel - 为什么 Excel 2010 VBA 用户窗体文本框字体会根据框架大小而变化?

python - 如何使用 Pandas 或 Spark Dataframe 展平嵌套 Excel 数据?