在Excel里試過(guò)了字典以后,發(fā)現(xiàn)比我以前常用的方法效率高,還好用,就隔三差五地用起來(lái)了。不過(guò), 雖然字典對(duì)象本身不復(fù)雜,但依舊常常有忘記了的地方,同一個(gè)問(wèn)題會(huì)反反復(fù)復(fù)地百度,真不應(yīng)該。 今天就抽一點(diǎn)點(diǎn)時(shí)間, 自己整理一回,免得老是麻煩度娘哦。 字典(Dictionary)對(duì)象: 相當(dāng)于一種聯(lián)合數(shù)組,由具有唯一性的關(guān)鍵字(Key)和它的項(xiàng)(Item)聯(lián)合組成。就好像一本字典,由字條和對(duì)應(yīng)的注解組成。 名詞對(duì)照: Dictionary 字典 Key 關(guān)鍵字 Item 項(xiàng)(項(xiàng)目)
下面分三個(gè)方面講解。 首先是方法: Add方法 object.Add (key, item) 向 Dictionary 對(duì)象中添加一個(gè)關(guān)鍵字項(xiàng)目對(duì)。 如果 key 已經(jīng)存在,將導(dǎo)致一個(gè)錯(cuò)誤。 Exists方法 object.Exists(key) 如果 Dictionary 對(duì)象中存在所指定的關(guān)鍵字則返回 true,否則返回 false。 Keys方法 object.Keys( ) 返回一個(gè)數(shù)組,其中包含了一個(gè) Dictionary 對(duì)象中的全部現(xiàn)有的關(guān)鍵字。 Items方法 object.Items( ) 返回一個(gè)數(shù)組,其中包含了一個(gè) Dictionary 對(duì)象中的所有項(xiàng)。 Remove方法 object.Remove(key) Remove 方法從一個(gè) Dictionary 對(duì)象中清除一個(gè)關(guān)鍵字,項(xiàng)目對(duì)。 如果所指定的關(guān)鍵字,項(xiàng)目對(duì)不存在,那么將導(dǎo)致一個(gè)錯(cuò)誤。 RemoveAll方法 object.RemoveAll( ) RemoveAll 方法從一個(gè) Dictionary 對(duì)象中清除所有的關(guān)鍵字,項(xiàng)目對(duì)。
其次是屬性: Count屬性 object.Count 返回一個(gè)Dictionary 對(duì)象中的項(xiàng)目數(shù)。只讀屬性。 Key屬性 object.Key(key) = newkey 在 Dictionary 對(duì)象中設(shè)置一個(gè) key。 如果沒(méi)有發(fā)現(xiàn)該 key,那么將創(chuàng)建一個(gè)新的 key 并且其 item 被設(shè)置為空。 Item屬性 object.Item(key)[ = newitem] 在一個(gè) Dictionary 對(duì)象中設(shè)置或者返回所指定 key 的 item。對(duì)于集合則根據(jù)所指定的 key 返回一個(gè) item。讀/寫(xiě)。 newitem 是可選項(xiàng)。僅適用于 Dictionary 對(duì)象;是與所指定的 key 相關(guān)聯(lián)的新值。 如果沒(méi)有找到該 item,那么將利用所指定的 newitem 創(chuàng)建一個(gè)新的 key。如果在試圖返回一個(gè)已有項(xiàng)目的時(shí)候沒(méi)有找到 key,那么將創(chuàng)建一個(gè)新的 key 且其相關(guān)的項(xiàng)目被設(shè)置為空。 CompareMode屬性 object.CompareMode[ = compare] 設(shè)置或者返回在 Dictionary 對(duì)象中進(jìn)行字符串關(guān)鍵字比較時(shí)所使用的比較模式。 compare 是可選項(xiàng),代表比較模式的值??梢允?0 (二進(jìn)制)、1 (文本), 2 (數(shù)據(jù)庫(kù))。 如果試圖改變一個(gè)已經(jīng)包含有數(shù)據(jù)的 Dictionary 對(duì)象的比較模式,那么將導(dǎo)致一個(gè)錯(cuò)誤。
最后是經(jīng)典代碼舉例: 這兩個(gè)例子很有Excel特色。 例一:把字典中所有的關(guān)鍵字賦給以B1單元格開(kāi)始的單元格區(qū)域中。 Dim dic, karr Set dic = CreateObject("Scripting.Dictionary") dic.Add "a", "名A" dic.Add "b", "名B" dic.Add "c", "名C" karr=dic.Keys '數(shù)組,下限0 [B1].Resize(dic.Count,1)=Application.Transpose(karr) 'Resize第一個(gè)參數(shù)是行數(shù),第二個(gè)參數(shù)是列數(shù)。 'Transpose,把水平排列的置換成豎向排列。 例二:把字典中所有的關(guān)鍵字對(duì)應(yīng)的項(xiàng)賦給以C1單元格開(kāi)始的單元格區(qū)域中。 Dim dic, tarr Set dic = CreateObject("Scripting.Dictionary") dic.Add "a", "名A" dic.Add "b", "名B" dic.Add "c", "名" tarr=dic.Items [C1].Resize(dic.Count,1)=Application.Transpose(tarr) 更多例子可參考下面的參考資料。 正文完 參考資料
|