有没有办法完全限定 VBA 函数的使用?

Posted

技术标签:

【中文标题】有没有办法完全限定 VBA 函数的使用?【英文标题】:Is there a way to fully qualify the use of a VBA function? 【发布时间】:2019-03-13 03:49:33 【问题描述】:

所以我刚刚了解到,如果您键入 VBA。这将激活一个包含 VBA 函数的自动列表。这是否意味着 VBA 是一个对象?如果我想使用 VBA 函数“完全限定”,这些限定符是什么?

例如,这些都是有效的陈述吗:

x = Sqr(25)
x = VBA.Sqr(25)
x = Application.VBA.Sqr(25)

感谢您的澄清。

【问题讨论】:

不,最后一个无效,因为 Application 对象没有 VBA 属性(没有任何意义)。 图书馆永远是***的。如果您打开对象浏览器 (F2),它们将位于左上角的库下拉列表中。 还有一些其他的“功能”。例如,Array(a,b,c) 尊重Option Base 语句,而VBA.Array(a,b,c) 将始终生成Base 0 数组。 VBA 是一个库,Excel 也是。 Excel.Application 将是对象。 不,Excel 和 VBA 是不同的库。 VBA 没有对象——它更像是一个命名空间。 【参考方案1】:

如果您不符合条件,则默认情况下 VBA 假定它是 VBA 函数。如果您想在 VBA 中使用工作表函数,请使用类似:

x = Application.WorksheetFunction.VLookup(Range("A1").Value, Range("B1:C100"), 1, False)

如果您使用像TRIM() 这样的函数,那么进行限定非常重要,因为 VBA 版本和工作表版本具有不同的结果。

【讨论】:

我刚刚研究了对象浏览器中的事物是如何组织的。如果我是正确的,如果我们限定一个 VBA 函数,所有这些都将是相同的:x = Sqr(25) x = VBA.Sqr(25) x = VBA.Math.Sqr(25) x = Math。平方(25) @GeekyFreaky 试验一下看看编译器会接受什么形式以及产生的结果的质量总是很有用的。 是的,我这样做了,它接受了所有这些,但只是想确定一下! :)

以上是关于有没有办法完全限定 VBA 函数的使用?的主要内容,如果未能解决你的问题,请参考以下文章

Doctrine:不指定类完全限定名 (FQN) 的 DQL 查询

如何使用环境路径查找可能未完全限定的文件?

让 mysql select 语句返回完全限定的列名,如 table.field

是否可以在 Access 查询中使用其模块名称来限定 VBA 函数调用?

VBA:有没有办法获取/读取模块属性?

有没有办法在出现警告消息框之前检测是不是使用 VBA 建立数据连接失败?