如何从VBA中的公式中读取参数?

时间:2016-11-16 22:29:59

标签: excel-vba vba excel

说我有以下功能:

  

函数MyFunction(A为字符串,可选B为整数)为字符串

在单元格A1中调用此函数:

  

= MyFunction的( “你好”, “15”)

我想通过读取A1:

中单元格的内容从另一个例程访问此函数的参数
  

范围(“A1”)。公式

然而,当在单元格中输入公式时,这将使用参数作为字符串返回整个公式。有没有办法轻松提取参数(“Hello”和15)?我试图避免使用笨重的文本操作路径。

1 个答案:

答案 0 :(得分:1)

如果你的所有参数都是Ranges,你可以使用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"