Excel工作表_事件
问题描述:
我想知道你是否可以帮助我与工作表_Change两个不同的目标。Excel工作表_事件
MY代码如下:
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
它正在工作,每当anytjing在列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
我该怎么办?
答
我认为你对Target
代表什么感到困惑。 Target
,在Worksheet_Change
事件的范围内的单元格是已更改。
此外,Target.Address
将永远是“总”,所以这个逻辑是行不通的:
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中的目标更改,您可以修改该过程以执行任何您想要的操作。
答
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
谢谢你的帮助。但我的问题是,我希望它在列A中找到名称“total”,如果它确实如此,它应该将列b中的同一行复制到新表中。 – jumbli 2015-04-07 06:54:07
看来你可以用公式来做到这一点。你为什么依靠Change事件? – 2015-04-07 12:23:01