当更新行中的特定单元格时,自动将行复制到另一个工作簿/工作表

时间:2017-05-01 14:36:00

标签: excel vba excel-vba

我已经在网上搜索过,无法找到代码去做我想做的事情,而且我遇到了翻滚......

我们目前正在寻求为excel中的销售代表实施类似CRM的报告系统。我们的销售代表将连续填写客户数据,并在帐户状态以某种方式改变时更新相关单元格。

报告全部已构建且有效,但我们缺少帐户历史记录部分,因此我们要做的是将新行中的整行复制到不同的工作簿或工作簿中第I列中的数据会针对一行进行更新,因此所有相关更改的历史记录会自动保存在单独的工作表或工作表中。

我已经搜索并在线查看了不同的代码和跟踪更改选项,但找不到会自动仅复制更新时整个相关行的代码,我们确实需要为数据复制整行保持对我们有意义,以便追踪变化并不能满足我们的需求。我们还要求在没有用户操作的情况下执行这些步骤。

非常感谢任何有关如何实现这一目标的帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

使用WorksheetChangeEvent检测更改内容的时间:

Private Sub Worksheet_Change(ByVal Target As Range)
' do stuff
End Sub

将上述代码放入工作表对象中(双击代码编辑器中的工作表)。

使用Application.Intersect缩小已更改的内容。例如,如果您只对单元格I1到I10000感兴趣:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("I1:I1000")) Is Nothing Then
     ' do stuff
End If

End Sub

然后复制所需的行:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Range("I1:I10000")) Is Nothing Then

    Rows(Target.Row).copy
    ' paste it where you want it

End If

End Sub

目标是受影响的细胞的范围。当然,用户可以一次影响多个小区,例如通过自动填充,您可能需要添加一些额外的逻辑,例如,如果Target.Rows.Count> 1,但你明白了。