Excel:字典(Dictionary)


字典不是VBA內置的類型,它是Windows腳本語言的類型。所以聲明字典的方法就和VBA內置對象不同,它有兩種方法聲明,一種是前期綁定聲明,一種是后期綁定聲明。

a.前期綁定

前期綁定是需要在工具菜單的引用對話框下首先引用對象庫,在編譯期完成綁定,這樣的優點是在編碼過程中可以直接看到字典對象引用的方法和屬性的提示,缺點就是移植性差,如果換一個計算機運行VBA代碼,也必須在新計算機上引用對象庫。方法如下:在VBE菜單中,選擇“工具-引用”,在彈出的對話框中選擇中邊的“瀏覽”,此時會打開Windows系統的驅動目錄(32位系統請打開C:\Windows\System32)或者(64位系統請打開C:\Windows\SysWOW64),然后找到scrrun.dll,確定即可。確定后可以檢查一下“Microsoft Scripting Runtime”是否已經勾選

添加引用后,就可以像定義其它變量一樣聲明字典了。

這樣的優點就是對初學者來說,在輸入變量和“.”之后,可以看到屬性和方法的提示

b.后期綁定

后期綁定是指在運行代碼的過程中創建對象,指定對象類型,不需要先聲明。對於后期綁定來說,優點是移植性好,換個計算機運行VBA程序不需要設置引用對象庫,缺點是編碼時不會有提示。方法如下:

小結一下數組,集合和字典的聲明方法:
①數組和集合都是VBA的內置對象,都可以直接使用Dim聲明 ,而字典不是VBA的內置對象,必須引用對象庫后才能用Dim聲明,或者在代碼中用后期綁定聲明。
②數組、集合和字典都必須分配了內存空間才能使用屬性和方法,數組分配內存空間就是確定數組的長度,集合分配內存空間就是New一個Collection,字典分配內存空間就是New一個Dictionary或CreateObject。

1. 創建和使用Dictionary對象

Dim objMyData

Set objMyData = Server.CreateObject(“Scripting.Dictionary”)

2.Dictionary對象的成員概要

屬 性 說 明

CompareMode (僅用於VBScript)設定或返回鍵的字符串比較模式

Count 只讀。返回Dictionary里的鍵/條目對的數量

Item(key) 設定或返回指定的鍵的條目值

Key(key) 設定鍵值

方 法 說 明

Add(key,item) 增加鍵/條目對到Dictionary

Exists(key) 如果指定的鍵存在,返回True,否則返回False

Items() 返回一個包含Dictionary對象中所有條目的數組

Keys() 返回一個包含Dictionary對象中所有鍵的數組

Remove(key) 刪除一個指定的鍵/條目對

RemoveAll() 刪除全部鍵/條目對

3. 對Dictionary中增加和刪除條目

objMyData.Add “MyKey”, “MyItem”            ‘Add Value MyItem with key MyKey

objMyData.Add “YourKey”, ”YourItem”        ‘Add value YourItem with key YourKey

blnIsThere = objMyData.Exists(“MyKey”)        ‘Returns True because the item exists

strItem = objMyData.Item(“YourKey”)            ‘Retrieve value of YourKey

strItem = objMyData.Remove(“MyKey”)        ‘Retrieve and remove YourKey

objMyData.RemoveAll                        ‘Remove all the items

4. 修改鍵或條目的值

可以通過修改鍵的值,或通過修改與特定的鍵關聯的條目的數據,來改變存儲在Dictionary內的數據。下面的代碼改變鍵為MyKey的條目中的數據。

ObjMyData.Item(“MyKey”) = “NewValue”        ‘ In VBScript

6. 遍歷Dictionary

arrKeys = objMyData.Keys                    ‘Get all the keys into an array

arrItems = objMyData.Items                    ‘Get all the items into an array



For intLoop = 0 To objMyData.Count –1        ‘Iterate through the array

    StrThisKey = arrKeys(intLoop)            ‘This is the key value

    StrThisItem = arrItems(intLoop)            ‘This is the item (data) value

Next

在VBScript里也可以使用For Each … Next語句完成同樣的功能:

‘ Iterate the dictionary as a collection in VBScript

For Each objItem in arrItems

    Response.Write objItem & “ = “ & arrItems(objItem) & “<BR>”

Next

引用:
https://blog.csdn.net/zbyufei/article/details/5822965


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM