
大家好,上節介紹了數組的次元,索引号、上界和下界的知識,本節繼續介紹數組的基礎知識,包括數組的分類,以及如何聲明數組。關于數組的内容相對抽象,會盡量介紹詳盡。
一、數組的分類
1、按次元劃分
在上節中已經具體的介紹了VBA數組次元的概念。那麼可以通過次元來劃分數組,在VBA中數組供支援最大60維的數組,最常用的就是一至三維數組。超過三維的數組不是特殊情況很少涉及。
數組的次元在使用前即根據需要确定,後面介紹聲明數組時會說明。
2、按是否固定大小分
在使用數組之時,根據聲明數組時數組的大小是否先固定,可以劃分為靜态數組和動态數組。
如果聲明數組時即确定數組大小即為靜态數組。
如果在聲明數組不确定數組的大小,先不固定數組的大小,而在程式在運作時使用Redim語句重新定義數組大小即為動态數組。
兩種數組的具體聲明和使用方法,後面會進行詳細介紹。
二、聲明數組
在使用變量時,都需要先聲明變量,同樣在使用VBA數組時,首先也要聲明數組,讓系統在記憶體中為它配置設定一片連續的記憶體空間。
聲明數組時就需要明确是聲明的是動态數組還是靜态數組,以及聲明數組的名稱、數組的次元和資料類型等内容。
聲明數組的語句和聲明變量語句一樣,包括有Dim(過程級變量)、Private(聲明子產品級變量)、Public(聲明工程級變量)和Static(聲明靜态變量)語句來聲明。
最常用得到就是Dim語句聲明數組,下面按不同的分類來說明和舉例。首先是最簡單的靜态一維數組,均以Dim語句聲明過程級數組為例。
1、聲明靜态一維數組:
Dim 數組名(第1維上界) as 資料類型
聲明語句中隻有第一維上界時,實際是省略下界,預設的數組的下界為從0開始。也可以由使用者自定義下界和上界的數值,具體語句形式如下。
Dim 數組名(第1維下界 to 第1維上界) as 資料類型
下面舉例說明,需要聲明名為myarray一維的字元串數組,大小為6。由于大小固定,即為靜态數組。
dim myarray(5) as string
dim myarray(1 to 6) as string
dim myarray(3 to 8) as string
三種形式聲明的名為myarray的數組是大小為6、元素均為字元串的一維靜态數組,不同的就是它的索引号不同。(數組的大小為上界-下界+1)。
如果希望數組下界是預設從1開始,可以在使用者窗體或者子產品的聲明部分,通過語句Option Base 1 來設定數組下界預設從1開始。後期介紹示例會介紹。(數組索引号從1開始,對于數組索引号與Excel表格的單元格cells屬性對應上更為友善,不容易出錯。具體後面介紹數組的使用時會再詳細說明。)
數組中的元素就可以表示為數組名稱(第一維索引号),索引号的範圍在下界和上屆之間。
2、聲明靜态二維數組
聲明靜态二維數組時,在不同的次元之間需要用英文逗号間隔。具體語句如下:
dim 數組名(第1維上界,第2維上界) as 資料類型
省略每個次元的下界時,系統預設從0開始,下界和上界的數值同樣可以自定義。
dim 數組名(第1維下界 to 第1維上界,第2維下界 to 第2維上界) as 資料類型
舉例說明,聲明名為myarray的數組,3*4大小靜态數組。(沒有确定數組元素類型時,省略預設為Variant變體型)
dim myarray(2,3)
dim myarray(1 to 3,1 to 4)
dim myarray(3 to 5,4 to 7)
三種形式均是聲明大小為3*4的靜态數組,數組類型省略,預設為Variant變體型。不同的就是索引号不同。通常都是前兩種形式。
使用預設數組資料類型的好處是,可以讓數組中元素,儲存不同類型的值。進而得到一種混合狀态的數組。
數組中的元素就可以表示為數組名稱(第一維索引号,第二維索引号),索引号的範圍在下界和上屆之間。
3、靜态三維數組數組
依次類推來介紹聲明三維數組,不同次元之間用英文逗号間隔。具體語句如下:
dim 數組名(第1維上界,第2維上界,第3維上界) as 資料類型
dim 數組名(第1維下界 to 第1維上界,第2維下界 to 第2維上界,第3維下界 to 第3維上界) as 資料類型
舉例說明,聲明名為myarray的數組,3*4*2大小整型數值類型的靜态數組。
dim myarray(2,3,1) as integer
dim myarray(1 to 3,1 to 4,1 to 2) as integer
dim myarray(2 to 4,3 to 6,2 to 3) as integer
三種形式均是聲明大小為3*4*2的靜态數組,數組類型為長整型。上界和下界不同進而使索引号不同。通常是使用前兩種形式。
數組中的元素就可以表示為a數組名稱(第一維索引号,第二維索引号,第三維索引号),索引号的範圍在下界和上屆之間。
超過三維的聲明數組都是以此類推。
4、聲明動态數組
前面介紹靜态數組和動态數組的差別,主要是在聲明時是否确定數組的大小。下面簡單介紹下動态數組的聲明方式。
首先在使用者窗體、子產品或者過程中使用dim或public語句聲明一個沒有下标的數組。比如:
dim myarray()
然後在程式過程中使用ReDim語句重新定義該數組的大小。具體語句如下:
ReDim [preserve] 數組名(下标) [ as 資料類型 ]
使用ReDim語句可以反複改變數組的大小和次元,但不能用ReDim語句更改已經聲明的資料類型,除非是預設的Variant所包含的資料
其他内容後面再具體介紹動态數組的章節會具體說明。
本節主要說明了數組類型的劃分,以及如何聲明數組,不同的次元,靜态和動态數組、資料類型,預設的下界等等知識點。内容較為抽象後續會結合執行個體來具體介紹。如果文章對你有幫助可以偶爾點選文末軟廣支援,祝大家學習快樂。