




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、VBA字典用法集錦及代碼詳解 # TOC o 1-5 h z HYPERLINK l bookmark2前言2 HYPERLINK l bookmark4一、字典對(duì)象的方法3 HYPERLINK l bookmark6(一)Add方法3 HYPERLINK l bookmark8(二)Exists方法4 HYPERLINK l bookmark10(三)Keys方法4 HYPERLINK l bookmark12(四)Items方法5 HYPERLINK l bookmark14(五)Remove方法6 HYPERLINK l bookmark16(六)RemoveAll方法6 HYPERLI
2、NK l bookmark18二、字典對(duì)象的屬性7 HYPERLINK l bookmark20(一)Count屬性7 HYPERLINK l bookmark22(二)Key屬性7 HYPERLINK l bookmark24(三)Item屬性8 HYPERLINK l bookmark26(四)CompareMode屬性9VBA字典用法集錦及代碼詳解 #前言凡是上過學(xué)校的人都使用過字典,從新華字典、成語詞典,到英漢字典以及各種各樣數(shù)不勝數(shù)的專業(yè)字典,字典是上學(xué)必備的、經(jīng)常查閱的工具書。有了它們,我們可以很方便的通過查找某個(gè)關(guān)鍵字,進(jìn)而查到這個(gè)關(guān)鍵字的種種解釋,非??旖輰?shí)用。凡是上過EH論壇
3、的想學(xué)習(xí)VBA里面字典用法的,幾乎都看過研究過northwolves狼版主、oobird版主的有關(guān)字典的精華貼和經(jīng)典代碼。我也是從這里接觸到和學(xué)習(xí)到字典的,在此,對(duì)他們表示深深的謝意,同時(shí)也對(duì)很多把字典用得出神入化的高手們致敬,從他們那里我們也學(xué)到了很多,也得到了提高。字典對(duì)象只有4個(gè)屬性和6個(gè)方法,相對(duì)其它的對(duì)象要簡潔得多,而且容易理解使用方便,功能強(qiáng)大,運(yùn)行速度非???,效率極高。深受大家的喜愛。本文希望通過對(duì)一些字典應(yīng)用的典型實(shí)例的代碼的詳細(xì)解釋來給初次接觸字典和想要進(jìn)一步了解字典用法的朋友提供一點(diǎn)備查的參考資料,希望大家能喜歡。給代碼注釋估計(jì)是大家都怕做的,因?yàn)橥浅隽Σ挥懞玫?,稍不?/p>
4、神或者自己確實(shí)理解得不對(duì),還會(huì)貽誤他人。所以下面的這些注釋如果有不對(duì)或者不妥當(dāng)?shù)牡胤?,?qǐng)大家跟帖時(shí)指正批評(píng),及時(shí)改正。字典的簡介字典(Dictionary)對(duì)象是微軟Windows腳本語言中的一個(gè)很有用的對(duì)象。附帶提一下,有名的正則表達(dá)式(RegExp)對(duì)象和能方便處理驅(qū)動(dòng)器、文件夾和文件的(FileSystemObject)對(duì)象也是微軟Windows腳本語言中的一份子。字典對(duì)象相當(dāng)于一種聯(lián)合數(shù)組,它是由具有唯一性的關(guān)鍵字(Key)和它的項(xiàng)(Item)聯(lián)合組成。就好像一本字典書一樣,是由很多生字和對(duì)它們對(duì)應(yīng)的注解所組成。比如字典的八曲8典“典”字的解釋是這樣的:冶皂.中青艾字戲.二百屋冊(cè)”孚,
5、=至縣丸西咒.空妄吋立獻(xiàn)、賓語:|51卞冥iorkafslanda;dscholarshipassies親丑夸之弔也蘭環(huán)說夫立馮也”一一空立k虧記啟冊(cè)灶古立味晝也,一*亦理尊亨:,不寸為主至.一一.呂僚評(píng)渥毛瀆三菽,AS,九丘.一一左傳-昭呂十二年)瓦晉之為菇:古肩旺蘭十三宇不逹二邑先共飯制互肖.一一亜:三料之臺(tái)、“典”字就是具有唯一性的關(guān)鍵字,后面的解釋就是它的項(xiàng),和“典”字聯(lián)合組成一對(duì)數(shù)據(jù)。VBA字典用法集錦及代碼詳解 # 常用關(guān)鍵字英漢對(duì)照:DictionaryKeyItem字典關(guān)鍵字項(xiàng),或者譯為條目VBA字典用法集錦及代碼詳解 # #VBA字典用法集錦及代碼詳解 字典對(duì)象的方法字典對(duì)象
6、的方法有6個(gè):Add方法、Keys方法、Items方法、Exists方法、Remove方法、RemoveAII方法。(一)Add方法向Dictionary對(duì)象中添加一個(gè)關(guān)鍵字項(xiàng)目對(duì)。object.Add(key,item)參數(shù)object:必選項(xiàng)??偸且粋€(gè)Dictionary對(duì)象的名稱。key:必選項(xiàng)。與被添加的item相關(guān)聯(lián)的key。item:必選項(xiàng)。與被添加的key相關(guān)聯(lián)的item。說明如果key已經(jīng)存在,那么將導(dǎo)致一個(gè)錯(cuò)誤。常用語句:DimdSetd=CreateObject(Scripting.Dictionary)d.Adda,Athensd.Addb,Belgraded.Addc,
7、Cairo代碼詳解1、Dimd:創(chuàng)建變量,也稱為聲明變量。變量d聲明為可變型數(shù)據(jù)類型(Variant),d后面沒有寫數(shù)據(jù)類型,默認(rèn)就是可變型數(shù)據(jù)類型(Variant)。也有寫成DimdAsObject的,聲明為對(duì)象。2、Setd=CreateObject(Scripting.Dictionary):創(chuàng)建字典對(duì)象,并把字典對(duì)象賦給變量d。這是最常用的一句代碼。所謂的“后期綁定”。用了這句代碼就不用先引用c:windowssystem32scrrun.dll了。3、d.Adda,Athens:添加一關(guān)鍵字”a”和對(duì)應(yīng)于它的項(xiàng)”Athens”。4、d.Addb,“Belgrade”:添加一關(guān)鍵字”b
8、”和對(duì)應(yīng)于它的項(xiàng)”Belgrade”。5、d.Addc,“Cairo”:添加一關(guān)鍵字”c”和對(duì)應(yīng)于它的項(xiàng)”Cairo”。Exists方法如果Dictionary對(duì)象中存在所指定的關(guān)鍵字則返回true,否則返回false。object.Exists(key)參數(shù)object:必選項(xiàng)??偸且粋€(gè)Dictionary對(duì)象的名稱。key:必選項(xiàng)。需要在Dictionary對(duì)象中搜索的key值。常用語句:Dimd,msg$Setd=CreateObject(Scripting.Dictionary)d.Adda,Athensd.Addb,Belgraded.Addc,CairoIfd.Exists(c)T
9、henmsg=指定的關(guān)鍵字已經(jīng)存在。Elsemsg=指定的關(guān)鍵字不存在。EndIf代碼詳解1、Dimd,msg$:聲明變量,d見前例;msg$聲明為字符串?dāng)?shù)據(jù)類型(String),一般寫法為DimmsgAsString。String類型聲明字符為美元號(hào)($)。2、Ifd.Exists(c)Then:若字典中存在關(guān)鍵字”c”,那么執(zhí)行下面的語句。3、msg=指定的關(guān)鍵字已經(jīng)存在。:把指定的關(guān)鍵字已經(jīng)存在。字符串賦給變量msg。4、Else:否則執(zhí)行下面的語句。5、msg=指定的關(guān)鍵字不存在。:把指定的關(guān)鍵字不存在。字符串賦給變量msg。6、EndIf:結(jié)束IfElse.Endif判斷。Keys方
10、法返回一個(gè)數(shù)組,其中包含了一個(gè)Dictionary對(duì)象中的全部現(xiàn)有的關(guān)鍵字。object.Keys()其中object總是一個(gè)Dictionary對(duì)象的名稱。常用語句:Dimd,kSetd=CreateObject(Scripting.Dictionary)d.Adda,Athensd.Addb,Belgraded.Addc,Cairok=d.KeysB1.Resize(d.Count,1)=Application.Transpose(k)代碼詳解1、Dimd,k:聲明變量,d見前例;k默認(rèn)是可變型數(shù)據(jù)類型(Variant)。2、k=d.Keys:把字典中存在的所有的關(guān)鍵字賦給變量k。得到的是
11、一個(gè)一維數(shù)組,下限為0,上限為d.Count-1。這是數(shù)組的默認(rèn)形式。3、B1.Resize(d.Count,1)=Application.Transpose(k):這句代碼是很常用很經(jīng)典的代碼,所以這里要多說一些。Resize是Range對(duì)象的一個(gè)屬性,用于調(diào)整指定區(qū)域的大小,它有兩個(gè)參數(shù),第一個(gè)是行數(shù),本例是d.Count,指字典中關(guān)鍵字的數(shù)量,整本字典中有多少個(gè)關(guān)鍵字,本例d.Count=3,因?yàn)橛?個(gè)關(guān)鍵字。第二個(gè)是列數(shù),本例是1。這樣“=”左邊的意思就是:把一個(gè)單元格B1調(diào)整為以B1開始的一列單元格區(qū)域,行數(shù)等于字典中關(guān)鍵字的數(shù)量d.Count,就是把單元格B1調(diào)整為單元格區(qū)域B1:
12、B3了。右邊的k是個(gè)一維數(shù)組,是水平排列的,我們知道Excel工作表函數(shù)里面有個(gè)轉(zhuǎn)置函數(shù)Transpose,用它可以把水平排列的置換成豎向排列。但是在VBA中不能直接使用該工作表函數(shù),需要通過Application對(duì)象的WorksheetFunction屬性來使用它。所以完整的寫法是Application.WorksheetFunction.Transpose(k),中間的WorksheetFunction可省略。現(xiàn)在可以解釋這句代碼了:把字典中所有的關(guān)鍵字賦給以B1單元格開始的單元格區(qū)域中。(四)Items方法返回一個(gè)數(shù)組,其中包含了一個(gè)Dictionary對(duì)象中的所有項(xiàng)目。object.I
13、tems()其中object總是一個(gè)Dictionary對(duì)象的名稱。常用語句:Dimd,tSetd=CreateObject(Scripting.Dictionary)d.Adda,Athensd.Addb,Belgraded.Addc,Cairot=d.ItemsC1.Resize(d.Count,1)=Application.Transpose(t)代碼詳解1、Dimd,t:聲明變量,d見前例;t默認(rèn)是可變型數(shù)據(jù)類型(Variant)。2、t=d.ltems:把字典中所有的關(guān)鍵字對(duì)應(yīng)的項(xiàng)賦給變量t。得到的也是一個(gè)一維數(shù)組,下限為0,上限為d.Count-1。這是數(shù)組的默認(rèn)形式。3、C1.R
14、esize(d.Count,1)=Application.Transpose(t):有了上面Keys方法的解釋這句代碼就不用多說了,就是把字典中所有的關(guān)鍵字對(duì)應(yīng)的項(xiàng)賦給以C1單元格開始的單元格區(qū)域中。(五)Remove方法Remove方法從一個(gè)Dictionary對(duì)象中清除一個(gè)關(guān)鍵字,項(xiàng)目對(duì)。object.Remove(key)其中object總是一個(gè)Dictionary對(duì)象的名稱。key:必選項(xiàng)。key與要從Dictionary對(duì)象中刪除的關(guān)鍵字、項(xiàng)目對(duì)相關(guān)聯(lián)。說明如果所指定的關(guān)鍵字,項(xiàng)目對(duì)不存在,那么將導(dǎo)致一個(gè)錯(cuò)誤。常用語句:DimdSetd=CreateObject(Scripting.
15、Dictionary)d.Adda,Athensd.Addb,Belgraded.Addc,Cairod.Remove(“b”)代碼詳解1、d.Remove(“b”):清除字典中”b”關(guān)鍵字和與它對(duì)應(yīng)的項(xiàng)。清除之后,現(xiàn)在字典里只有2個(gè)關(guān)鍵字了。(六)RemoveAll方法RemoveAll方法從一個(gè)Dictionary對(duì)象中清除所有的關(guān)鍵字,項(xiàng)目對(duì)。object.RemoveAll()其中object總是一個(gè)Dictionary對(duì)象的名稱。常用語句:DimdSetd=CreateObject(Scripting.Dictionary)d.Adda,Athensd.Addb,Belgraded.
16、Addc,Cairod.RemoveAll代碼詳解1、d.RemoveAII:清除字典中所有的數(shù)據(jù)。也就是清空這字典,然后可以添加新的關(guān)鍵字和項(xiàng),形成一本新字典。二、字典對(duì)象的屬性字典對(duì)象的屬性有4個(gè):Count屬性、Key屬性、Item屬性、CompareMode屬性。Count屬性返回一個(gè)Dictionary對(duì)象中的項(xiàng)目數(shù)。只讀屬性。object.Count其中object個(gè)字典對(duì)象的名稱。常用語句:Dimd,n%Setd=CreateObject(Scripting.Dictionary)d.Adda,Athensd.Addb,BeIgraded.Addc,Cairon=d.Count代
17、碼詳解1、Dimd,n%:聲明變量,d見前例;n被聲明為整型數(shù)據(jù)類型(Integer)。一般寫法為DimnAsInteger。Integer類型聲明字符為百分比號(hào)()。2、n=d.Count:把字典中所有的關(guān)鍵字的數(shù)量賦給變量n。得到的是3。Key屬性在Dictionary對(duì)象中設(shè)置一個(gè)key。object.Key(key)=newkey參數(shù):object:必選項(xiàng)??偸且粋€(gè)字典(Dictionary)對(duì)象的名稱。key:必選項(xiàng)。被改變的key值。newkey:必選項(xiàng)。替換所指定的key的新值。說明:如果在改變一個(gè)key時(shí)沒有發(fā)現(xiàn)該key,那么將創(chuàng)建一個(gè)新的key并且其相關(guān)聯(lián)的item被設(shè)置為空
18、。常用語句:DimdSetd=CreateObject(Scripting.Dictionary)d.Adda,Athensd.Addb,Belgraded.Addc,Cairod.Key(c)=d代碼詳解1、d.Key(c)=d:用新的關(guān)鍵字”d”來替換指定的關(guān)鍵字”c”,這時(shí),字典中就沒有關(guān)鍵字c了,只有關(guān)鍵字d了,與d對(duì)應(yīng)的項(xiàng)是”Cairo”。(三)Item屬性在一個(gè)Dictionary對(duì)象中設(shè)置或者返回所指定key的item。對(duì)于集合則根據(jù)所指定的key返回一個(gè)item。讀/寫。object.Item(key)=newitem參數(shù)object:必選項(xiàng)??偸且粋€(gè)Dictionary對(duì)象的
19、名稱。key:必選項(xiàng)。與要被查找或添加的item相關(guān)聯(lián)的key。newitem:可選項(xiàng)。僅適用于Dictionary對(duì)象;newitem就是與所指定的key相關(guān)聯(lián)的新值。說明如果在改變一個(gè)key的時(shí)候沒有找到該item,那么將利用所指定的newitem創(chuàng)建一個(gè)新的key。如果在試圖返回一個(gè)已有項(xiàng)目的時(shí)候沒有找到key,那么將創(chuàng)建一個(gè)新的key且其相關(guān)的項(xiàng)目被設(shè)置為空。常用語句:DimdSetd=CreateObject(Scripting.Dictionary)d.Adda,Athensd.Addb,Belgraded.Addc,CairoMsgBoxd.Item(c)代碼詳解1、d.Item(c):獲取指定的關(guān)鍵字”c”對(duì)應(yīng)的項(xiàng)。2、MsgBox:是一個(gè)VBA函數(shù),用消息框顯示。如果要詳細(xì)了解MsgBox函數(shù)的,可參見另一篇文章“常用VBA函數(shù)精選合集”。(四)CompareMode屬性設(shè)置或者返回在Dic
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 家裝水電安裝合同范本
- 光纖熔接工程外包勞務(wù)合同
- 承租機(jī)械設(shè)備租賃合同
- 提高辦公效率的策略與方法研究
- 2025年青海貨運(yùn)從業(yè)資格證考試500題
- 出租房房屋租賃合同
- 個(gè)人加工合同協(xié)議書
- 抗滑樁基礎(chǔ)勞務(wù)施工合同
- 股份制公司運(yùn)營優(yōu)化方案
- 2025年黑龍江貨運(yùn)從業(yè)資格證模擬考試題庫及答案大全
- GB/T 2471-2024電阻器和電容器優(yōu)先數(shù)系
- 國際安保行業(yè)分析
- 成人住院患者靜脈血栓栓塞癥預(yù)防護(hù)理
- 三年級(jí)道德與法治3.我很誠實(shí) 說課一等獎(jiǎng)
- 緩解抑郁和焦慮的心理技巧
- 疼痛科門診小針刀療法知情同意書
- 肝門膽管惡性腫瘤的護(hù)理查房
- 燒傷病人查房版
- 《發(fā)行債券》課件
- 二房東可行性方案計(jì)劃書
- 環(huán)境設(shè)計(jì)就業(yè)需求分析報(bào)告
評(píng)論
0/150
提交評(píng)論