0

我有一个关于 Excel 2010 VBA 的问题。进行了大量搜索以寻找解决方案,但答案并没有解决我的问题。希望stackoverflow社区能够为我提供一些启示。

我有一个从工作表中的单元格调用的用户编写的函数。它使用两个参数调用——两个单元格在同一张表上。

该函数的目的是检查这两个参数并根据它们的值返回一个字符串作为函数的结果。

到目前为止,功能按预期工作。

但是,如果第一个参数的值有一定的值,我希望能够改变第二个参数的值。这就是我卡住的地方。我找不到任何方法来改变它的价值。

我尝试将参数设置为所需的值,但这会导致错误。我想我可能能够设置一个指向活动工作表的指针,因此可以设置单元格,但我不知道它的引用是什么(因为工作表上会有很多)。

老实说,我不确定我能做我需要的。任何关于前进道路的想法或意见将不胜感激。

带着敬意

格雷厄姆·琼斯

4

2 回答 2

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 
于 2013-03-07T14:43:11.320 回答
0

作为一般规则,您不希望 Excel 函数更改其输入。我以前做过,但它被认为是非常糟糕的做法。

更可接受的方法是创建一个计算第二个参数的函数- 这将需要 2 个输入:

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

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

我希望这是有道理的 - 如果没有,请告诉我,我会提供一个例子。

于 2013-03-07T14:42:24.620 回答