【问题标题】:Excel 2010 VBA User Written Function Modification of Input parameterExcel 2010 VBA 用户编写函数修改输入参数
【发布时间】:2013-03-07 22:50:37
【问题描述】:

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

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

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

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

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

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

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

关于

格雷厄姆·琼斯

【问题讨论】:

    标签: excel vba


    【解决方案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 
    

    【讨论】:

    • 非常感谢您的建议。我已经使用它成功地检查了我的价值观并在必要时更改了其他价值观。
    【解决方案2】:

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

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

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

    然后您使用该函数来计算工作表中的第二个参数(换句话说,不是让包含您的第二个参数的单元格只是一个设定值,而是现在通过此函数计算),然后是您的原始函数可以像往常一样工作,第二个参数始终是预期值。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-04
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      相关资源
      最近更新 更多