我可以在VBA中以编程方式检查Excel函数签名吗?

cap*_*tle 9 excel vba excel-vba

而不是通过名称显式访问所有参数,有没有办法从函数内以编程方式获取函数参数列表?

所以对于这个函数签名:

Function doSomething(Arg1 as String, Arg2 as Range, Optional Arg3 as String):
Run Code Online (Sandbox Code Playgroud)

理想情况下,是否存在包含参数名称及其元数据(类型,可选,默认值等)的对象?例如,Me.Arguments此函数中的代码将生成如下字典:

{
  "Arg1": {
    "Type": String,
    "Optional": False,
    "Default": Nothing
  },
  "Arg2": {
    "Type": Range,
    "Optional": False,
    "Default": Nothing
  },
  "Arg1": {
    "Type": String,
    "Optional": True,
    "Default": Nothing
  }
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

小智 3

你可能会考虑

  • 使用Application.Caller获取对包含公式的单元格的引用,然后使用该单元格的.Formula属性将公式获取为文本。
  • 然后,您可以解析公式以获取文本形式的参数。

当我想将 3D 范围作为参数传递给 UDF 时,我这样做了(这样我就可以制作一套像COUNTIFSUMIF一样适用于 3D 范围的函数Sheet1:Sheet99!$A$1:$A$1000)。我发现当 3D 范围内的值发生更改时,UDF 将被触发 - 但只要我需要对接收 UDF 中的 3D 范围的变体执行任何操作,UDF 就会出现运行时错误。我的解决方法如第一段中所述 - 获取公式并解析它以获取文本形式的 3D 范围。

我尝试将代码作为块插入,但受到格式要求的阻碍。这是在我的 SkyDrive上使用它的工作簿