我尝试根据列N是否包含大于0.9的数字,将行从一个工作表复制到另一个工作表。
当我用sub test()替换第一行并从vbaeditor运行宏时,该公式有效但是我无法通过工作表Raw Data中发生的更改来使其工作。
Private Sub Worksheet_Calculate()
Dim i As Long
Dim lr1 As Long, lr2 As Long
Dim Delta As String
Dim wks1 As Worksheet, wks2 As Worksheet
Set wks1 = ActiveSheet
Set wks2 = Worksheets("Charges") 'change to suit
lr1 = wks1.Cells(Rows.Count, "N").End(xlUp).Row
For i = 2 To lr1
lr2 = wks2.Cells(Rows.Count, "A").End(xlUp).Row + 1
wks1.Cells(i, "N").EntireRow.Copy Destination:=wks2.Cells(lr2, "A")
Next i
End Sub
上面的工作表计算将适用于我需要的execpt我现在只需要它不复制以前复制的行。
答案 0 :(得分:1)
必须将其插入到正在更新 N 列的工作表的工作表代码区域中:
2**31
答案 1 :(得分:0)
执行此操作的一种方法是将sub重命名为Test并将其放入模块中。我们称之为Module1。确保sub不是私有的,所以:
Sub Test() ' your code here End Sub
然后在VBA编辑器中,您可以转到原始数据工作表并从下拉列表中选择工作表更改功能,并从那里调用您的测试子。所以它看起来像:
Private Sub Worksheet_Change(ByVal Target As Range) Call Module1.Test End Sub
这将在原始数据工作表中的任何更改上调用Sub Test。这可能比你想要的更多。如果您只想在调用Sub Test之前检查某个列是否已更改,则可以将以下代码添加到Worksheet Change过程中。这会在调用sub之前测试更改的单元格是否在某个范围内。在这种情况下,我制作了范围列N.
Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range Set r = intersect(Target, Me.Range("N:N")) If r Is Nothing Then Exit Sub Call Module1.Test End Sub