gpt4 book ai didi

vba - Excel worksheet_change 事件

转载 作者:行者123 更新时间:2023-12-04 22:03:35 26 4
gpt4 key购买 nike

我想知道您是否可以帮助我处理两个不同目标的 worksheet_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 列中更新 anytjing,它就会在 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从不是“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 范围内的目标更改来修改该过程以执行您想要的任何操作。

关于vba - Excel worksheet_change 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29461638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com