gpt4 book ai didi

Excel VBA 事件根据用户输入进行计算

转载 作者:行者123 更新时间:2023-12-02 17:42:21 33 4
gpt4 key购买 nike

首先,我是 VBA 编程新手,因此我们将不胜感激。

我有两列;一种是用户可以输入美元值(“AL”),另一种是用户可以输入百分比值(“AK”)。目的是让用户能够输入任一值(% 或 $)并计算另一个值。例如,如果用户在“AL”中输入 10%,则适用的 $ 值将在“AK”中生成,反之亦然。

下面是我迄今为止提出的代码,但它不起作用。任何想法/建议将不胜感激!谢谢!

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
Set cell = Range("AK9:AL50")
'Application.EnableEvents = False Application.EnableEvents = True'

If Not Application.Intersect(cell, Range(Target.Address)) Is Nothing Then
If Target.Column = 37 Then ' Value in first column changed
Range("AL" & Target.Row).Value = Range("AK" & Target.Row).Value / Range("V" & Target.Row).Value
Exit Sub
ElseIf Target.Column = 38 Then ' value in second column changed
Range("AK" & Target.Row).Value = Range("AL" & Target.Row).Value * Range("V" & Target.Row).Value
Exit Sub
'Application.EnableEvents = False Application.EnableEvents = True'
End If
End If
End Sub

最佳答案

您需要删除Exit Subs

并且 Application.EnableEvents = True 需要位于 if 之外。

第一次使用 Application.EnableEvents = False 行运行它时,它关闭了事件,并且由于您在重新打开事件之前退出了子事件,因此它保持关闭状态并且子事件从未被调用再次。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
Set cell = Range("AK9:AL50")
Application.EnableEvents = False

If Not Application.Intersect(cell, Range(Target.Address)) Is Nothing Then
If Target.Column = 37 Then ' Value in first column changed
Range("AL" & Target.Row).Value = Range("AK" & Target.Row).Value / Range("V" & Target.Row).Value

ElseIf Target.Column = 38 Then ' value in second column changed
Range("AK" & Target.Row).Value = Range("AL" & Target.Row).Value * Range("V" & Target.Row).Value

End If
Application.EnableEvents = True
End If
End Sub

我的猜测是现在您的事件已被禁用。

将上面的正确代码放入工作表后运行此代码:

Sub foooo()
Application.EnableEvents = True
End Sub

这将重新打开事件。只需要一次。

关于Excel VBA 事件根据用户输入进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43144046/

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