【发布时间】:2010-02-04 16:22:17
【问题描述】:
我有一个用 VBA 编写的用户定义函数,它可以更新绘制形状(由三个圆圈组成的交通灯)的颜色。工作表单元格中的调用看起来像这样:
setTrafficLight(A1, "Oval 1", "Oval 2", "Oval 3")
其中 A1 是一个单元格,其中包含例如“绿色”或“红色”。其他参数是形状的名称。
我遇到了一个问题,即调用该函数并删除了撤消历史记录(在 Excel 中调用用户定义的函数确实会禁用旧的撤消条目)。为了解决这个问题,我通过
注册了一个空的撤消功能Application.OnUndo "Undo SetTrafficLight", "undoSetTrafficLight"
在我的 setTrafficLight 函数中,Application.Volatile 设置为 False,这样每次工作表上的任何值更改时都不会调用该函数。但是现在,当 A1 中的输入值发生变化时,甚至不会调用该函数。使用Application.Volatile = True 它可以工作,但是撤消无法正常工作。如果我完全删除Application.Volatile,那么更新工作正常,但只能使用一级撤消。
知道如何解决这个问题吗?
【问题讨论】:
-
这个问题可能属于stackoverflow.com
标签: excel vba user-defined-functions