Vba 当行中的特定单元格被更新时,自动将行复制到另一个工作簿/工作表
我在网上搜索,找不到一个代码来做我想做的事情,我遇到了一个障碍 我们目前正在寻找在excel中为我们的销售代表实施类似CRM的报告系统。我们的销售代表将填写一行客户数据,并在客户状态发生变化时更新相关单元格 报告都是构建的,可以正常工作,但我们缺少帐户历史记录部分,所以我们要做的是,在第一列中的数据为一行更新时,将新行中的整行复制到另一个工作表或工作簿中,以便在单独的工作表或工作表中自动保存所有相关更改的历史记录 我在网上搜索并查看了不同的代码和跟踪更改选项,但找不到一个在更新时只自动复制整个相关行的代码,我们确实需要复制整个行,以便数据对我们保持有意义,因此跟踪更改无法满足我们的需要。我们还需要在用户不采取行动的情况下执行这些步骤 对于如何实现此目标的任何帮助,我们都将不胜感激。使用来检测什么时候发生了更改:Vba 当行中的特定单元格被更新时,自动将行复制到另一个工作簿/工作表,vba,excel,Vba,Excel,我在网上搜索,找不到一个代码来做我想做的事情,我遇到了一个障碍 我们目前正在寻找在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是唯一可行的方法。出于性能原因,您可能需要连续打开第二个(目标)工作簿。您能使用真实的数据库吗?甚至连访问权都会起作用。这样,它就可以像一个正常的应用程序一样工作,而不会带来很多麻烦。