Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 2010 VBA用户编写的输入参数修改函数_Excel_Vba - Fatal编程技术网

Excel 2010 VBA用户编写的输入参数修改函数

Excel 2010 VBA用户编写的输入参数修改函数,excel,vba,Excel,Vba,我有一个关于Excel2010VBA的问题。做了大量的寻找解决方案,但答案没有解决我的问题。希望stackoverflow社区能够为我带来一些启示 我有一个用户编写的函数,它是从工作表中的单元格调用的。它由两个参数调用–两个单元格位于同一张图纸上 函数的目的是检查这两个参数,并根据它们的值返回一个字符串作为函数的结果 到目前为止,这些函数都按预期工作 但是,如果第一个参数的值具有某个值,我希望能够更改第二个参数的值。这就是我被卡住的地方。我找不到任何方法来改变它的价值 我尝试将参数设置为所需的值

我有一个关于Excel2010VBA的问题。做了大量的寻找解决方案,但答案没有解决我的问题。希望stackoverflow社区能够为我带来一些启示

我有一个用户编写的函数,它是从工作表中的单元格调用的。它由两个参数调用–两个单元格位于同一张图纸上

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

到目前为止,这些函数都按预期工作

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

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

老实说,我不确定我能做我需要的事。如对未来道路有任何想法或意见,我们将不胜感激

关于


格雷厄姆·琼斯(Graham Jones)

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

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

  • 第一个参数
  • 第二个参数的默认值
  • 然后使用该函数计算工作表中的第二个参数(换言之,包含第二个参数的单元格不是一个设定值,而是通过该函数计算的),然后原始函数可以像往常一样工作,第二个参数始终是期望值

    我希望这是有意义的-如果没有,请告诉我,我将提供一个示例。

    因为用户定义函数(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 
    

    非常感谢你的建议。我用它成功地检查了我的价值观,并根据需要修改了其他价值观。