gpt4 book ai didi

Excel VBA - 在检测到单元格值变化时调用函数的最佳实践

转载 作者:行者123 更新时间:2023-12-04 20:53:41 26 4
gpt4 key购买 nike

我已经尝试了许多不同的方法来在检测到特定范围的单元格的变化时自动调用宏/函数
类似于以下内容:

Private Sub Worksheet_Change(ByVal Target As Range)
Range ("PartNumbers") = "B6:B18"
If Not Application.Intersect(Range(Target.Address), Range("PartNumbers")) Is Nothing Then
Application.EnableEvents = False
decodepartnumber (Target.Address)
Application.EnableEvents = True
End If
End Sub

我想知道是否有更好的方法,即:
1.避免丢失撤消历史
2.仅在值更改时触发功能。

该应用程序旨在监控 range (B6:B18)如果我在 B6 中输入产品部件号,函数 decodepartnumber将在C6中填写产品描述,在D6中填写产品价格。

我最初是用 B6 编码的,用 =part_desc(A6) 填充。和 =part_price(A6)在 C6 中,但这意味着用户无法轻松编辑结果值..

任何关于最佳实践或替代方法的想法都将不胜感激。

最佳答案

作为替代方法:您可以使用函数来触发更改(计算必须设置为 xlAutomatic)

在一个模块中:

Function ValChange(Cell2Follow As Range) As String
Evaluate "decodepartnumber(" & ActiveCell.Row & ")"
End Function

Sub decodepartnumber(rw As Long)
Cells(rw, 3).Value = "description ": Cells(rw, 4).Value = "price"
End Sub

在单元格中(工作表上的某处):=ValChange(PartNumbers)

当您在“PartNumbers”范围内进行更改时,该功能将触发(您的 Point .2)
而且您仍然可以使用 Undo 选项,但需要注意的是:Undoing 仅适用于 PartNumbers 范围内的第一个 Undo,直到第一个 Undo。

(+ 不考虑多选更改)

关于Excel VBA - 在检测到单元格值变化时调用函数的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52774617/

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