我想知道你是否可以帮我处理两个不同目标的workheet_Change。
我的代码如下:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:A50")) Is Nothing Then Exit Sub
Range("A1:A50").Copy ThisWorkbook.Sheets(2).Range("B1")
End Sub
它正在工作,只要在A列中更新任何井,它就会更新并复制到B栏(工作表2)。现在我遇到的问题是我想添加另一个目标,B1:B50,并且仅当该目标中包含单词SUM时,它应该复制并更新。问题是它是复制但不更新任何东西。我的代码是:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:A50, B1:B50")) Is Nothing Then Exit Sub
If Target.Address = "TOTAL" Then
Range("A1:A50").Copy ThisWorkbook.Sheets(2).Range("B1")
end if
End Sub
我在做什么?
答案 0 :(得分:3)
我认为您对Target
所代表的内容感到困惑。 Target
,Worksheet_Change
事件范围内的已更改。
此外,Target.Address
将从不为" TOTAL",因此此逻辑无效:
If Target.Address = "TOTAL"
考虑到这一点,我会做这样的事情。为每个范围(A列或B列)创建单独的过程。然后使用Worksheet_Change
事件确定要调用的过程:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:A50, B1:B50")) Is Nothing Then Exit Sub
If Target.Column = 1 Then Call RangeA(Target)
If Target.Column = 2 Then Call RangeB(Target)
End Sub
Sub RangeA(Target as Range)
Range("A1:A50").Copy ThisWorkbook.Sheets(2).Range("B1")
End Sub
Sub RangeB(Target As Range)
'Here, you put the code that you want to run when Target is in column B
End Sub
由于我不确定您打算如何处理B列,我暂时将RangeB
程序留空了。您可以根据范围B1:B50中的目标更改修改该过程以执行任何操作。
答案 1 :(得分:0)
B列是如何填充的?
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A50")) Is Nothing Then
Range("A1:A50").Copy ThisWorkbook.Sheets(2).Range("B1")
End If
If Not Intersect(Target, Range("B1:B50")) Is Nothing Then
If Target = "Total" Then
MsgBox Target.Address 'do something here
End If
End If
End Sub