CallByName的一些缺陷

博客介绍了 CallByName 函数,它可执行对象的方法,或设置、返回对象属性。给出了该函数的语法及命名参数,还说明其可在运行时用字符串名称调用方法,并举例展示了用它设置文本框属性、获取属性值及调用方法移动文本框。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CallByName 函数

执行一个对象的方法,或者设置或返回一个对象的属性。

语法

CallByName(object, procname, calltype,[args()])

CallByName 函数的语法有以下命名参数:

部分描述
object 必需的;变体型(对象)。函数将要执行的对象的名称。
procname 必需的;变体型(字符串)。一个包含该对象的属性名称或者方法名称的字符串表达式。
calltype 必需的;常数。一个 vbCallType 类型的常数,代表正在被调用的过程的类型。
args() 可选的:变体型(数组)

说明

CallByName 函数用于获取或者设置一个属性,或者在运行时使用一个字符串名称来调用一个方法。

在下面的例子中,第一行使用 CallByName 来设置一个文本框的 MousePointer 属性,第二行得到 MousePointer 属性的值,第三行调用 Move 方法来移动文本框:

None.gifCallByName Text1, "MousePointer", vbLet, vbCrosshair
None.gifResult 
= CallByName (Text1, "MousePointer", vbGet)
None.gif
CallByName Text1, "Move", vbMethod, 100100

上边是关于CallbyName函数的用法,但是如果进行如下试验,就会发现存在一些缺陷如下:

None.gif'系统提示错误
None.gif
vba.Interaction.CallByName(activedocument,"Paragraphs.Count",VbGet )

None.gif'函数运行正常
None.gif
vba.Interaction.CallByName(activedocument.Paragraphs,"Count",VbGet )

关键就在于ProcName不能是多级的属性,只能是最近的属性,为了解决这个问题,只能动点手脚了,自己处理ProcName部
分了,很是不爽。
但是CallbyName 确实是个好东西,用好了会收益不浅的。
使用Google搜索一下,有些文章不错的,记录一下:

1:根据对象名称来操作对象(非CallByName方法)
2:让数据来证明
3:后绑定方式下对Object的处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值