首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CallByName不适用于所有对象/函数

CallByName不适用于所有对象/函数
EN

Stack Overflow用户
提问于 2020-04-07 19:34:39
回答 2查看 451关注 0票数 0

在VBA中,大多数Excel函数都可以通过Application.WorksheetFunctionVBA访问。

sinhsin为例:

工作表函数

代码语言:javascript
复制
Debug.Print Application.WorksheetFunction.sinh(5)
 74,2032105777888

VBA函数

代码语言:javascript
复制
Debug.Print VBA.sin(5)
-0,958924274663138

问题:

为什么CallByName不能同时处理工作表函数和VBA函数?

工作表函数

代码语言:javascript
复制
Debug.Print CallByName(Application.WorksheetFunction, "sinh", VbGet, 5)
 74,2032105777888

VBA函数

代码语言:javascript
复制
Debug.Print CallByName(VBA, "sin", VbGet, 5)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-07 20:00:36

CallByName的电话签名..。它实际上是VBA.Interaction的一个成员,如下所示(所以您的代码片段相当于VBA.Interaction.CallByName(VBA, "sin", VbGet, 5)或只是VBA.CallByName...,在任何情况下都是一个边点):

CallByName(Object As Object, ProcName As String, CallType As VbCallType, Args() As Variant)

由于VBA不是Object,而是标准的VBA库,这会引发类型不匹配错误。

票数 1
EN

Stack Overflow用户

发布于 2020-04-08 01:03:44

在VBA中,大多数

函数都可以通过Application.WorksheetFunction或VBA访问。

不是的。作为对全局Excel.Application对象的后期绑定成员调用(如果您托管在Excel中),可以访问Excel函数,而且有些函数在Excel.WorksheetObject接口中有一个早期绑定的“等效”(错误处理策略需要不同)(确实是从Application.WorksheetFunction获得的)。

VBA库的成员,无论是全局的还是非的,都与Excel无关:每个VBA项目都引用VBA标准库,而不管其主机应用程序(Word、Excel、Access、...SolidWorks、Sage300等)。如果一个函数看起来既存在于VBA中,也存在于Excel库中,那么VBA函数在理论上应该是首选的。

使用对象浏览器( object,F2)发现VBA标准库的成员,包括并可能特别是它的Math模块。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61088032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档