注册 登录
Office中国论坛/Access中国论坛 返回首页

ganlinlao的个人空间 http://www.office-cn.net/?230471 [收藏] [复制] [分享] [RSS]

日志

CallByName函数---被微软阉割的反射机制

已有 2114 次阅读2014-7-19 11:49 |个人分类:vb入门| CallByName函数, vba的反射机制

 题外话:年青人,如果你还没来得及学习vba,跳过它吧,直接学习vb.net或c#

CallByName函数是一个很容易被忽略的函数,很多人都认为它是一个鸡肋的函数。
但事实上,它并不是!它只是生活在童话里的那只丑小鸭。

1、vba帮助是如何定义CallByName函数?

CallByName 函数

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

语法

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

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

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

说明

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

个人理解与说明:

CallByName是使用iDispatch接口,也就是后期绑定。所以性能比前期绑定要差一些。

Vba中的自定义类,都是双接口,所以CallByName,可以适用于自定义类的实例化对象。

CallByName无法使用模块中的函数。要使用函数,都须用类包装起来。

2、CallByName简单的使用例子:

CallByName Me.Text1, "mousepointer", VbLet, vbCrosshair      '设置text1文本框的鼠标样式。

Result = CallByName (Text1, "text", vbGet)      '获取text1的值
CallByName Text1, "Move", vbMethod, 100, 100
如果单看这些vba提供简单的例子,都会觉得CallByname挺鸡肋的。



评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-27 03:12 , Processed in 0.052191 second(s), 17 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部