【问题标题】:Is there a way to fully qualify the use of a VBA function?有没有办法完全限定 VBA 函数的使用?
【发布时间】: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 没有对象——它更像是一个命名空间。

标签: excel 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 试验一下看看编译器会接受什么形式以及产生的结果的质量总是很有用的。
  • 是的,我这样做了,它接受了所有这些,但只是想确定一下! :)
猜你喜欢
  • 2020-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-17
  • 2020-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多