另一个UDF中的Excel用户定义函数未更新

时间:2016-05-13 11:20:29

标签: vba excel-vba excel

这是我的第一篇文章,所以我希望这一切都好......我已经在其他地方看过了,无法在任何地方找到这个具体问题。

背景:

假设我有一个实验,有4种方法可能会失败,每个失败都有不同的代码: ' R 1' - > ' R 4'同 ' R' =没有失败

我最初编写了4个单独的UDF,然后在我的工作表单元格中有嵌套的IF函数来测试每个函数的输出并返回相关的失败代码(或者如果它通过了R')。使用所需的所有参数,这会产生相当长的Excel公式。

每个UDF都有几个基于多个单元格中的值的参数。我的想法是创建一个' Master Function'只会调用每个UDF并返回正确的代码。这样,在单元格中它看起来就像(例如)= Master()

问题:

我首先将单元格范围放入主函数中,然后将它们作为参数传递给函数(例如)

Function Master()

Dim p1 as Range
Dim p2 as Range

Set p1 = Range("A1")
Set p2 = Range("B1")

myR1 = UDF1(p1)
myR2 = UDF2(p2)

If myR1 <> "" Then
Master = myR1
...

End Function

但是,当A1或B1中的值发生变化时,UDF不会更新。我意识到返回值只会在单元格作为参数传递时改变,但我认为我将参数传递给UDF1和UDF2 ??

显然,如果我写:

Function Master(p1 as Range, p2 as Range)

myR1 = UDF1(p1)
myR2 = UDF2(p2)

End Function

它适用于我,但我最终必须将大量参数传递给这个主函数,我能做到,但我想知道是否还有另一种方法?

注意 - 如果可能的话,我想避免使用Application.Volatile。

就像我说的那样,这是我的第一篇文章,所以我希望我遵守所有的论坛规则等等。我也希望我很清楚!

感谢。

0 个答案:

没有答案