Vba Excel工作表更改事件
我想知道您是否可以帮助我为两个不同的目标更改工作表 我的代码如下:Vba Excel工作表更改事件,vba,excel,excel-2010,Vba,Excel,Excel 2010,我想知道您是否可以帮助我为两个不同的目标更改工作表 我的代码如下: 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 它正在工
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
我该怎么办?我想你对
Target
代表什么感到困惑<代码>目标,在工作表\u Change
事件的范围内是正在更改的单元格
另外,Target.Address
将从不为“TOTAL”,因此此逻辑将不起作用:
If Target.Address = "TOTAL"
考虑到这一点,我会这样做。为每个范围(a列或B列)创建单独的过程。然后使用工作表\u 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列中的同一行复制到一个新的工作表中。似乎你可以使用公式来实现这一点。你为什么要依赖变革事件?