VBA教程:數組、集合和字典

      網友投稿 2132 2025-04-01

      VBA教程:數組、集合和字典

      之前的一些文章,我們詳細解了集合、數組和字典這三種常用的數據結構。在本文中,我們簡單小結一下,看看它們之間有哪些區別,以鞏固所學的知識。

      存儲的類型

      數組

      數組是一組具有相同名稱的同類元素。可用來存儲多個相同類型的變量。

      集合

      集合可以用來存儲不同的數據類型。

      字典

      字典可以用來存儲不同的數據類型。

      注意,在數組中,可以存儲用戶定義類型。然而,不能在字典或集合中存儲用戶定義類型。

      數組

      Dim MyArray(5) As Integer

      也可以先不指定數組的大?。?/p>

      Dim MyArray() As Integer

      在使用之前,須指定其大小:

      ReDim MyArray(5)

      集合

      Dim col As Collection

      在需要使用該集合前創建集合對象:

      Set col = New Collection

      Dim col As New Collection

      字典

      Dim dict As New Dictionary

      或者:

      Dim dict As Dictionary

      Set dict = New Dictionary

      對元素賦值

      1.不能對集合中已有元素重新賦值。

      2.可以修改字典元素的值。在給指定鍵的字典元素賦值時,如果指定鍵的字典元素已存在,則會修改該元素的值。如果指定鍵的字典元素不存在,則會添加新字典元素。

      3.集合、字典都是對象,在返回整個對象時,應使用Set語句。

      對元素的訪問

      數組、集合、字典的存儲結構不同,決定了訪問其元素的差異。

      數組

      每個元素放置在固定的位置,我們需要知道其索引,來訪問它。例如:

      Dim MyArray(5) As Integer

      Dim i As Integer

      For i = 0 To 5

      MyArray(i) = i

      Nexti

      ‘訪問第2個元素

      Debug.Print MyArray(1)

      數組的索引值默認從0開始。

      集合

      Dim col As Collection

      Dim rng As Excel.Range

      Dim sRangeName As String

      Set col = New Collection

      sRangeName= “RangeName”

      Set rng = Range(sRangeName)

      col.Add rng, sRangeName

      此時,想從該集合中獲取特定元素項時,可以指定其位置(索引值),或者使用鍵值。如果你知道其是第一個添加到集合中的且位置沒有變化,可以使用索引值:

      col.Item(1)

      集合的索引值基于1。也可以使用鍵值:

      col.Item(sRangeName)

      集合的索引值從1開始。

      字典

      字典中有唯一標識元素的鍵,我們只需要使用這個鍵來訪問元素,而不需知道其具體的存放位置。

      下面的代碼添加對象到字典中,其語法與添加元素項到集合中非常相似,只是鍵和元素參數的位置相反:

      Dim dict As Scripting.Dictionary

      Dim rng As Excel.Range

      Dim sRangeName As String

      Set dict = New Scripting.Dictionary

      sRangeName= “RangeName”

      Set rng = Range(sRangeName)

      dict.Add sRangeName, rng

      可以使用下面的語句來獲取指定鍵所在的元素項:

      dict.Item(sRangeName)

      添加元素

      添加元素時,集合與字典的參數位置剛好相反,例如:

      ‘在集合中添加元素

      col.Add Item:=6, Key:=”東區”

      ‘在字典中添加元素

      dict.Add Key:=”東區”,Item:=6

      然而,對于集合,沒有內置的方法來檢查是否已存在指定的鍵,但是可以使用Exists方法檢查字典中是否存在指字鍵。

      什么時候使用

      在編程時,通常要求我們能創建一個對象,能夠存放一組相關的值,并且能夠通過該對象便捷地處理存儲的值,數組、集合、字典都能實現這個目的。

      數組

      當有許多同類型的數據需要逐一處理時,可以使用數組。然而,數組的大小在使用之前通常是固定的,因此在知道數據數量的前提下使用數組。

      集合

      集合可任意添加或刪除元素,因此對于數量變化的數據使用集合更好。相對于數組,集合更容易使用一些,特別是添加元素、遍歷元素。然而,集合是只讀的,你可以添加或刪除集合中的元素,但不能修改其值。

      字典

      有一系列數據,但是需要獲取不重復元素值時,可以使用字典。

      字典與集合

      集合是一種很好的數據結構,在Excel對象模型中幾乎所有的容器結構都是使用集合,例如:Workbooks、Worksheets等。

      然而,字典有更多的內置方法,使得其使用比集合更方便。特別是下列3個方法:

      1.Exists方法:用來判斷字典中是否存在指定的鍵。(如果要在集合中檢查指定的鍵是否存在,則需要額外編寫一段代碼來完成)

      2.Keys方法:返回一個數組,包含字典中所有的鍵。(同樣,集合中實現相同的目的需要編寫遍歷和填充的代碼)

      VBA教程:數組、集合和字典

      3.RemoveAll方法:清除字典中所有的元素。

      此外,正如前面提到的,字典允許我們修改鍵和值。并且,由于Dictionary對象使用了散列表和一些先進的排序和索引算法,因此字典的運行速度也快于集合的速度。

      數組與集合

      與使用數組相比,使用集合對象更便于訪問和維護:

      1.集合成員可以添加在一個已經存在成員的前面或后面,這取決于該已有成員的鍵值或索引值。

      2.集合成員可以通過它們的鍵值或索引值訪問。

      3.集合成員可以通過它們的鍵值或索引值刪除。但是,利用一個索引值刪除多個成員時,應該從后面開始刪除,即從索引值較高的成員到索引值較低的成員,因為每次刪除成員后集合就要重新建立索引。

      數組與字典、集合

      正如前面提到的,在數組中,可以存儲用戶定義類型。然而,不能在字典或集合中存儲用戶定義類型。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何實現圖書庫存表的自動進銷存管理
      下一篇:Excel2019四舍五入ROUND函數的使用方法
      相關文章
      亚洲精品午夜国产VA久久成人| 亚洲人成人77777网站不卡 | 亚洲依依成人亚洲社区| 亚洲日韩精品A∨片无码| 亚洲妇女无套内射精| 亚洲自偷自偷在线成人网站传媒| 亚洲av永久无码嘿嘿嘿| 亚洲欧洲视频在线观看| 亚洲精品成人网站在线播放| 久久精品国产亚洲AV电影| 亚洲另类激情综合偷自拍| 亚洲视频精品在线| 亚洲另类激情综合偷自拍| 久久精品亚洲一区二区三区浴池 | 亚洲高清视频一视频二视频三| 亚洲AV无码专区国产乱码不卡| 亚洲国产成人综合精品| 亚洲av无码无线在线观看| 性色av极品无码专区亚洲| 在线视频亚洲一区| 亚洲国产一区二区视频网站| 亚洲精品美女久久久久99小说| 亚洲日韩人妻第一页| 亚洲午夜福利717| 亚洲国产精品一区二区第一页| 国产亚洲一区二区在线观看| 亚洲AV日韩AV永久无码绿巨人 | 亚洲欧美日韩一区二区三区 | 亚洲av片在线观看| 国内成人精品亚洲日本语音| 亚洲国产成人a精品不卡在线| 中文字幕日韩亚洲| 亚洲国产精品va在线播放| 亚洲精品国产成人99久久| 亚洲精品白色在线发布| 亚洲午夜无码久久久久小说| 日韩色视频一区二区三区亚洲| 国产成人精品曰本亚洲79ren| 国产亚洲精品精华液| 久久久久亚洲av无码专区| 亚洲一本之道高清乱码|