Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

tag 標(biāo)簽: Variant

相關(guān)帖子

版塊 作者 回復(fù)/查看 最后發(fā)表

相關(guān)日志

分享 VB Variant 數(shù)據(jù)類(lèi)型與用戶(hù)自定義類(lèi)型
zhuyiwen 2013-9-28 12:41
在 VB 的標(biāo)準(zhǔn)工程的標(biāo)準(zhǔn)模塊中: Public Type EventRecord TriTime As Date TriType As String CallMobile As String End Type Sub testVariant() Dim er As EventRecord Dim p As Variant er.TriTime = Now() er.TriType = “CallIn” er.CallMobile = “13907309999” p = er End Sub 復(fù)制 代碼 這樣是有問(wèn)題的。會(huì)出現(xiàn)“編譯錯(cuò)誤:只在定義在公共對(duì)象模塊中用戶(hù)定義類(lèi)型能和變體類(lèi)型相互轉(zhuǎn)換或傳遞給后期綁定功能!钡腻e(cuò)誤。 而如果將這些代碼放在窗體模塊中: 程序編譯通不過(guò),出現(xiàn)“編譯錯(cuò)誤:在私有對(duì)象模塊中不能定義Public的用戶(hù)定義類(lèi)型! 將用戶(hù)定義類(lèi)型改為: Private Type EventRecord 復(fù)制代碼 運(yùn)行程序,同樣報(bào)第一種情況的編譯錯(cuò)誤。 新建一個(gè)類(lèi)模塊,將用戶(hù)定義類(lèi)型移到類(lèi)模塊中,并將聲明成Public,運(yùn)行程序,同樣報(bào)錯(cuò)。與第二種情況相同。 這說(shuō)明一點(diǎn),為了實(shí)現(xiàn)變體類(lèi)型變量與用戶(hù)定義類(lèi)型變量的相互轉(zhuǎn)換,在一個(gè)VB標(biāo)準(zhǔn)工程中,用戶(hù)類(lèi)型定義放在模塊中是不行的,放在窗體或類(lèi)模塊中也是不行的,窗體或類(lèi)模塊都是私有的,無(wú)法找到公共對(duì)象模塊。那么,怎么做才能做到后期綁定呢? 好了,我們來(lái)添加一個(gè)ActiveX DLL工程,將: Public Type EventRecord TriTime As Date TriType As String CallMobile As String End Type 復(fù)制代碼 移到這個(gè)工程的類(lèi)模塊中,設(shè)置該類(lèi)的Instancing屬性,該屬性確定在工程之外是否能創(chuàng)建公共類(lèi)的實(shí)例,它有6種選擇,在這里我們選擇 5 – MultiUse,允許其它應(yīng)用程序創(chuàng)建該類(lèi)的實(shí)例。 再回到原來(lái)的工程,設(shè)置工程的引用,添加“工程2”(就是上面的ActiveX DLL工程)。刪除工程的模塊和類(lèi)模塊,只剩下窗體模塊: 運(yùn)行程序,程序能夠正常通過(guò)。 結(jié)論 :當(dāng)我們要開(kāi)發(fā)一個(gè)應(yīng)用程序時(shí),我們應(yīng)該將我們用到自定義類(lèi)型都放到一個(gè)ActiveX DLL工程,形成公共的類(lèi)型庫(kù)(TypeLibrary),供程序調(diào)用。
個(gè)人分類(lèi): VBA|5358 次閱讀|0 個(gè)評(píng)論

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

GMT+8, 2024-10-23 10:20 , Processed in 0.060584 second(s), 15 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回頂部