Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 当行中的特定单元格被更新时,自动将行复制到另一个工作簿/工作表_Vba_Excel - Fatal编程技术网

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

Vba 当行中的特定单元格被更新时,自动将行复制到另一个工作簿/工作表,vba,excel,Vba,Excel,我在网上搜索,找不到一个代码来做我想做的事情,我遇到了一个障碍 我们目前正在寻找在excel中为我们的销售代表实施类似CRM的报告系统。我们的销售代表将填写一行客户数据,并在客户状态发生变化时更新相关单元格 报告都是构建的,可以正常工作,但我们缺少帐户历史记录部分,所以我们要做的是,在第一列中的数据为一行更新时,将新行中的整行复制到另一个工作表或工作簿中,以便在单独的工作表或工作表中自动保存所有相关更改的历史记录 我在网上搜索并查看了不同的代码和跟踪更改选项,但找不到一个在更新时只自动复制整个相

我在网上搜索,找不到一个代码来做我想做的事情,我遇到了一个障碍

我们目前正在寻找在excel中为我们的销售代表实施类似CRM的报告系统。我们的销售代表将填写一行客户数据,并在客户状态发生变化时更新相关单元格

报告都是构建的,可以正常工作,但我们缺少帐户历史记录部分,所以我们要做的是,在第一列中的数据为一行更新时,将新行中的整行复制到另一个工作表或工作簿中,以便在单独的工作表或工作表中自动保存所有相关更改的历史记录

我在网上搜索并查看了不同的代码和跟踪更改选项,但找不到一个在更新时只自动复制整个相关行的代码,我们确实需要复制整个行,以便数据对我们保持有意义,因此跟踪更改无法满足我们的需要。我们还需要在用户不采取行动的情况下执行这些步骤

对于如何实现此目标的任何帮助,我们都将不胜感激。

使用来检测什么时候发生了更改:

Private Sub Worksheet_Change(ByVal Target As Range)
' do stuff
End Sub
将上述代码放入工作表对象(在代码编辑器中双击工作表)

用于缩小已更改内容的范围。例如,如果您只对单元格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,但您明白了。

您是否看到了有关
工作表\u Change()
的内容?做一些搜索,你会发现一些东西。通常,
子工作表\u更改(byVal Target作为范围)//如果Target.Address=“$A$1”,那么…
您尝试了什么?您搜索了什么,但没有找到任何内容?我已将excel vba标记添加到您的帖子中,因为vba是唯一可行的方法。出于性能原因,您可能需要连续打开第二个(目标)工作簿。您能使用真实的数据库吗?甚至连访问权都会起作用。这样,它就可以像一个正常的应用程序一样工作,而不会带来很多麻烦。