Excel 2010 VBA用户书写功能修改输入参数
问题描述:
我对Excel 2010 VBA有疑问。做了大量的搜索解决方案,但答案没有解决我的问题。希望*社区能够为我提供一些启示。Excel 2010 VBA用户书写功能修改输入参数
我有一个用户编写的函数从工作表中的单元格调用。它被称为两个参数 - 两个单元格在同一张纸上。
该函数的目的是查看两个参数,并根据函数的值返回一个字符串作为函数的结果。
到目前为止,函数按预期工作。
但是,如果第一个参数的值有一定的值,我希望能够改变第二个参数的值。这是我卡住的地方。我找不到任何方法来改变它的价值。
我试过只是将参数设置为所需的值,但会导致错误。 我想我可能能够设置一个指向活动工作表的指针,因此也就是单元格,但我不知道它的引用是什么(因为表单中会有很多)。
说实话,我不确定我可以做我需要的。任何有关前进道路的想法或意见都会受到感谢。
至于
格雷厄姆·琼斯
答
由于用户定义的函数(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
答
作为一般规则,你不希望你的Excel函数来改变他们的投入。我以前做过,但这被认为是非常糟糕的做法。
的更可接受的方式将是使其计算所述第二参数的函数 - 这将花费2个输入:
- 第一个参数
- 用于第二参数
然后,您使用该finction来计算工作表中的第二个参数(换句话说,而不是让包含您的第二个参数的单元格只是一个设置值,现在它是计算通过这个函数使用),然后你的原始函数可以一直工作,第二个参数总是期望的值。
我希望这是有道理的 - 如果没有,请让我知道,我会举一个例子。
这一建议非常感谢工作表。我已经用它来成功检查我的值并根据需要改变其他值。 – user133589 2013-03-12 15:30:54