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 
+0

这一建议非常感谢工作表。我已经用它来成功检查我的值并根据需要改变其他值。 – user133589 2013-03-12 15:30:54

作为一般规则,你不希望你的Excel函数来改变他们的投入。我以前做过,但这被认为是非常糟糕的做法。

的更可接受的方式将是使其计算所述第二参数的函数 - 这将花费2个输入:

  1. 第一个参数
  2. 用于第二参数
的默认值

然后,您使用该finction来计算工作表中的第二个参数(换句话说,而不是让包含您的第二个参数的单元格只是一个设置值,现在它是计算通过这个函数使用),然后你的原始函数可以一直工作,第二个参数总是期望的值。

我希望这是有道理的 - 如果没有,请让我知道,我会举一个例子。