gpt4 book ai didi

vba - 如何在VBA中结束无限 "change"循环

转载 作者:行者123 更新时间:2023-12-02 00:34:58 24 4
gpt4 key购买 nike

我在使用 Visual Basic 时遇到问题。我想创建一个宏/函数,它将我输入的数字乘以 3,并在同一单元格中给出结果。我尝试过这样的事情:

Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$Q$21" Then
Target.Value = Target.Value * 3
End If
End Sub

但它不起作用 - 我得到像“xE25”这样的结果,因为它不断增加。

我希望它在第一次迭代后停止,或者仅在我按“enter”键时才工作,而不是在单元格中进行每次更改时工作。
将结果放在不同的单元格中很容易,但这不是我的重点。


-----编辑:
我将“If”行编辑为:
If (Target.Column = 5 Or Target.Column = 11 Or Target.Column = 17 Or Target.Column = 23) And (Target.Row >= 19 And Target.Row <= 24) And Target.Value <> "" Then
所以它适用于我需要的所有单元格。之后,最好的解决方案是@Chrismas007给出的方式,因为它在尝试一次删除少数单元格中的数据时不会提示错误。

最佳答案

通过错误处理来确保.EnableEvents返回到True:

Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo CleanExit
If Target.Address = "$Q$21" Then
Application.EnableEvents = False
Target.Value = Target.Value * 3
End If
CleanExit:
Application.EnableEvents = True
On Error GoTo 0
End Sub

关于vba - 如何在VBA中结束无限 "change"循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28029283/

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