gpt4 book ai didi

vba - 使用 If Target.Address = ""Then 写入多个单元格

转载 作者:行者123 更新时间:2023-12-04 20:10:37 27 4
gpt4 key购买 nike

我有基本代码,允许在保持累积值的同时对写入此单元格的值求和。所以如果我在单元格中输入“4”,然后在单元格中输入“10”,结果将是“14”(不仅仅是输入的第二个值“10”)。这就是我所拥有的,我必须说它有效。

#

Option Explicit

Dim oldvalue As Double

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$J$5" Then
On Error GoTo fixit
Application.EnableEvents = False
If Target.Value = 0 Then oldvalue = 0
Target.Value = 1 * Target.Value + oldvalue
oldvalue = Target.Value
fixit:
Application.EnableEvents = True
End If
End Sub

#

但是,我想将此处理应用于不仅仅是单元格 J5。例如,我希望将相同的代码逻辑也应用于单元格 R5。
到目前为止,我已经尝试使用
OR 

我也尝试过使用
If Not Intersect (Target, Range("J5:R5")) Is Nothing Then

但是这些方法中的每一种都将两个单元格联系在一起(这样我进入一个单元格的内容就会被汇总到两个单元格中 - 每个单元格都将添加到另一个单元格的值相加)。我想不出办法来挽救我的生命,所以去了这个论坛,希望能找到比我更聪明的人。

最佳答案

也许(这是假设现有逻辑是正确的....如果 Target = 0 以及 *1 添加什么值,不确定为什么将旧值设置为 0?)

Option Explicit

Dim oldvalueJ As Double
Dim oldValueR As Double

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

On Error GoTo fixit
Application.EnableEvents = False
Select Case Target.Address
Case "$J$5"
If Target = 0 Then oldvalueJ = 0
Target = Target + oldvalueJ
oldvalueJ = Target
Case "$R$5"
If Target = 0 Then oldValueR = 0
Target = Target + oldValueR
oldValueR = Target
End Select
fixit:
Application.EnableEvents = True
End Sub

关于vba - 使用 If Target.Address = ""Then 写入多个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49784137/

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