我对Excel 2010 VBA有疑问。完成了大量的搜索解决方案,但答案并没有解决我的问题。希望stackoverflow社区能够为我提供一些启示。
我有一个用户编写的函数,可以从工作表中的单元格调用。它用两个参数调用 - 两个单元都放在同一张纸上。
该函数的目的是检查两个参数,并根据函数的值返回一个字符串作为函数的结果。
到目前为止,这些功能按预期工作。
但是,如果第一个参数的值具有特定值,我希望能够更改第二个参数的值。这是我被卡住的地方。我找不到任何方法来改变它的价值。
我试过将参数设置为所需的值,但这会导致错误。 我以为我可以设置一个指向活动工作表的指针,因此也就是单元格,但我不知道它的参考是什么(因为工作表上会有很多)。
说实话,我不确定我能做我需要的事情。我们将非常感激地对未来前进的任何想法或意见。
关于
格雷厄姆琼斯答案 0 :(得分:1)
由于用户定义的函数(UDF)无法更改工作簿/工作表等的状态。您可以使用工作表更改事件。
将此代码复制到您输入功能的工作表
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents=False
if Target.Address = "$A$1" and target.count = 1 Then ' change in first parameter - first parameter
if Target.Value ="something" then Range("B1").Value ="change"
'$A$1 is the location of fist paramenter
'range("b1") is second parameter on assumption
end if
Application.EnableEvents=True
End Sub
答案 1 :(得分:0)
作为一般规则,您不希望Excel函数更改其输入。我之前已经做过,但是这被认为是非常糟糕的做法。
更可接受的方式是制作一个计算第二个参数的函数 - 这将需要2个输入:
然后你使用该结果来计算工作表中的第二个参数(换句话说,不是让包含你的第二个参数的单元格只是一个设定值,现在通过这个函数来计算)然后你的原始函数可以像往常一样工作,第二个参数始终是预期值。
我希望这是有道理的 - 如果没有,请告诉我,我会提供一个例子。