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