是否可以在VBA中编写一个名称中包含句点的UDF?

Excel 2010附带了一些名称中包含句点的function。 例如STDEV.SPERCENTILE.EXC

是否可以使用VBA为名称指定我自己的函数名称,如PERCENTILE.CUSTOM

例如,我想用公式=NAME.SUFFIX()来引用下面的函数。

 Option Explicit Function NAMEdotSUFFIX() As Variant NAMEdotSUFFIX = 42 End Function 

从VBA是不可能的。 这篇MSDN文章展示了如何在VBA中定义一个函数,具体来说, 本文阐述了元素名称的规则。

正如@SiddharthRout已经build议的那样,外部库在声明函数名时比VBA有更less的限制,所以在外部名称中允许使用句点。

尽pipe有MSDN文档,但是可以在VBA标识符中使用一些特殊字符,包括UDF。 特殊字符甚至可以是标识符中的第一个/唯一字符。 根据VBA项目和VBE的代码页,特殊字符的可用性会有所不同。

这是一个完美有效的VBAfunction:

 Public Function Foo·Bar() Foo·Bar = 5 End Function 

并可以在Excel公式中使用:

 =Foo·Bar() 5 

同样,函数的这个gem使用一个不间断的空格作为函数名称:

 Public Function  () = 6 End Function 

但是,虽然NBSP的function是有效的,但令人遗憾的是,它不能在Excel公式中使用。

有可能使用:

 Public Function ·() · = 5 End Function 

红利

有人忘记告诉Enum团队关于标识符规则。 虽然枚举不能在Excel公式中使用,但可以使用除方括号的回车符或方括号之外的任何字符作为枚举名称或成员。

这是完全有效的VBA:

 Enum [Foo : Bar = 5 : End Enum] [.B!ar"] = 6 End Enum 

而VBE漂亮的打印机把它变成这个不可分割的混乱:

 Enum Foo : Bar = 5 : End Enum [.B!ar"] = 6 End Enum