2016-11-16 25 views
0

说我有以下功能:如何从VBA中的公式读取参数?

函数MyFunction的(A作为字符串,可选乙作为整数)作为字符串

调用单元格A1这样的功能:

= MyFunction(“Hello”,“15”)

我想从另一个routi访问此函数的参数NE通过在A1读出该单元中的内容:

范围(“A1”)式

然而此方法返回参数作为字符串整个公式与式在单元格中输入。有没有办法轻松提取参数(“你好”和15)?我试图避免笨重的文本处理路线。

+0

你说的笨重的文本操作的意思,结果呢?这包括使用搜索和替换等功能吗? – Hrothgar

+0

为什么你需要从另一个函数访问参数?我猜测有一个更干净的方法来做到这一点 - 就像在MyFunction中缓存它们一样。 – Comintern

回答

1

如果所有参数都是范围,则可以使用Precedents属性来获取参数。

如果情况并非如此,恐怕文本操作就是你所得到的。如果你只是试图解析一个特定的函数(而不是任何函数),那并不是那么糟糕。

Function MyFunc(ar1, ar2) 

    MyFunc = 1 

End Function 

Public Sub ReadMyFunc(rng As Range) 

    Dim vaArgs As Variant 

    vaArgs = Split(Split(Left(rng.Formula, Len(rng.Formula) - 1), "MyFunc(")(1), ",") 

    Debug.Print "First arg is: " & vaArgs(0) & vbNewLine & "Second arg is: " & vaArgs(1) 

End Sub 

从即时窗口

?activecell.Formula 
=MyFunc(A1,"1") 
readmyfunc activecell 
First arg is: A1 
Second arg is: "1" 
+0

这个伎俩。谢谢。 – NamSandStorm