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

时间:2013-04-16 15:57:42

标签: excel vba excel-vba user-defined-functions

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

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

例如,我想使用公式=NAME.SUFFIX()

引用以下函数
Option Explicit

Function NAMEdotSUFFIX() As Variant

    NAMEdotSUFFIX = 42

End Function

2 个答案:

答案 0 :(得分:3)

正如@SiddharthRout已经建议的那样,外部库在声明函数名时比VBA具有更少的限制,因此外部名称允许使用句点。

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

这是一个完全有效的VBA功能:

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

可以在Excel公式中使用:

=Foo·Bar()
5

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

Public Function  ()
    = 6
End Function

但是,虽然使用NBSP的功能有效,但遗憾的是,它无法在Excel公式中使用。

可以使用:

Public Function ·()
  · = 5
End Function

BONUS HACK

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

这是完全有效的VBA:

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

VBE漂亮的打印机把它变成了这个无法解决的混乱:

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

答案 1 :(得分:0)

VBA无法实现。 This MSDN article显示了如何在VBA中定义函数,特别是this article列出了元素名称的规则。