Jvd*_*vdV 2 excel vba worksheet-function
这是一个相当短的问题,可能很容易回答,但是我自己在这一点上没有这样做:
样本数据:
A
B
C
Run Code Online (Sandbox Code Playgroud)
示例代码:
With Sheet1
Debug.Print Application.WorksheetFunction.Match("D", .Columns(1), 0) 'Option1
Debug.Print Application.Match("D", .Columns(1), 0) 'Option2
Debug.Print WorksheetFunction.Match("D", .Columns(1), 0) 'Option3
End With
Run Code Online (Sandbox Code Playgroud)
题:
我知道 option2 丢失了智能感知并且不会进入调试模式,但是 option1 和 option3 的行为相同
虽然关于WorksheetFunction对象的文档说我们可以使用对象的WorksheetFunction属性Application,但不这样做似乎也能正常工作。
那么,Application在这方面使用对象引用有什么附加价值,不使用它有什么缺点呢?
我会说这Application是全局上下文,当我们使用任何东西时,编译器在其当前上下文中找不到,它会在 中Application查找,最终Application.WorksheetFunction在您的情况下找到。所以两者应该是等价的。(这就是它在 JavaScript 中的工作方式)但我可能是错的。
更新
文档指出,某些函数和属性可以在没有 Application. 的情况下调用,因此 Application.WorksheetFunction 确实等效于 WorksheetFunction,但它是错误的,Application 作为全局上下文。
更新
根据这篇有趣的文章,Application确实是默认对象:
Application 对象是默认对象,即使未指定,Excel 也会假定它。