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

标签 vba excel user-defined-functions

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

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

例如,我想使用公式 =NAME.SUFFIX() 引用以下函数

Option Explicit

Function NAMEdotSUFFIX() As Variant

    NAMEdotSUFFIX = 42

End Function

最佳答案

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

尽管有 MSDN 文档,还是可以在 VBA 标识符(包括 UDF)中使用一些特殊字符。特殊字符甚至可以是标识符中的第一个/唯一的字符。根据 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

奖励黑客

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

这是完全有效的 VBA:

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

VBE pretty-print 将其变成了无法解析的困惑:

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

关于vba - 是否可以在 VBA 中编写名称中包含句点的 UDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16041671/

相关文章:

vba - 如何仅在当前行上运行代码

vba - 我正在尝试在所有工作表中运行此代码,除了工作簿中的一个

windows - 尝试使用vba自动拆分excel中的数据

javascript - 在 IE9 或更高版本中从 Javascript 导出 excel 或 csv 文件的任何方法

scala - Spark UDAF动态输入架构处理

hadoop - 如何在Hive脚本中将功能作为S3位置的输入

Excel VBA 运行时错误 '438' : Object doesn't support this property or method

vba - 比较两列,但只有前 4 个字母 - vba excel

VBA 锁定了我的工作表

python - 对于现有 UDF,雪花 UDF 返回 "Unknown user-defined function"