注冊 登錄
Office中國論壇/Access中國論壇 返回首頁

ganlinlao的個(gè)人空間 http://m.mzhfr.cn/?230471 [收藏] [復(fù)制] [分享] [RSS]

日志

CallByName函數(shù)---被微軟閹割的反射機(jī)制

已有 2484 次閱讀2014-7-19 11:49 |個(gè)人分類:vb入門| CallByName函數(shù), vba的反射機(jī)制

 題外話:年青人,如果你還沒來得及學(xué)習(xí)vba,跳過它吧,直接學(xué)習(xí)vb.net或c#

CallByName函數(shù)是一個(gè)很容易被忽略的函數(shù),很多人都認(rèn)為它是一個(gè)雞肋的函數(shù)。
但事實(shí)上,它并不是!它只是生活在童話里的那只丑小鴨。

1、vba幫助是如何定義CallByName函數(shù)?

CallByName 函數(shù)

執(zhí)行一個(gè)對(duì)象的方法,或者設(shè)置或返回一個(gè)對(duì)象的屬性。

語法

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

CallByName 函數(shù)的語法有以下命名參數(shù):

部分描述
object必需的;變體型(對(duì)象)。函數(shù)將要執(zhí)行的對(duì)象的名稱。
procname必需的;變體型(字符串)。一個(gè)包含該對(duì)象的屬性名稱或者方法名稱的字符串表達(dá)式。
calltype必需的;常數(shù)。一個(gè) vbCallType 類型的常數(shù),代表正在被調(diào)用的過程的類型。
args()可選的:變體型(數(shù)組)。

說明

CallByName 函數(shù)用于獲取或者設(shè)置一個(gè)屬性,或者在運(yùn)行時(shí)使用一個(gè)字符串名稱來調(diào)用一個(gè)方法。

個(gè)人理解與說明:

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

Vba中的自定義類,都是雙接口,所以CallByName,可以適用于自定義類的實(shí)例化對(duì)象。

CallByName無法使用模塊中的函數(shù)。要使用函數(shù),都須用類包裝起來。

2、CallByName簡單的使用例子:

CallByName Me.Text1, "mousepointer", VbLet, vbCrosshair      '設(shè)置text1文本框的鼠標(biāo)樣式。

Result = CallByName (Text1, "text", vbGet)      '獲取text1的值
CallByName Text1, "Move", vbMethod, 100, 100
如果單看這些vba提供簡單的例子,都會(huì)覺得CallByname挺雞肋的。



評(píng)論 (0 個(gè)評(píng)論)

facelist doodle 涂鴉板

您需要登錄后才可以評(píng)論 登錄 | 注冊

QQ|站長郵箱|小黑屋|手機(jī)版|Office中國/Access中國 ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2025-7-13 03:03 , Processed in 0.065249 second(s), 17 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回頂部