天天看點

VBA數組(五)數組函數2

VBA數組(五)數組函數2

大家好,上節介紹了VBA數組中的LBound和UBound等函數,本節介紹剩餘的數組函數,Erase函數、Split函數和Join函數。

VBA數組(五)數組函數2
VBA數組(五)數組函數2

Erase函數

Erase函數的用處已經展現在字面上,像一個橡皮擦。可以重新初始化靜态數組的元素或者釋放動态數組的存儲空間。

在Erase語句中隻需要給出數組名即可,不能帶括号和下标。文法格式如下:

Erase 數組名1,數組名2,數組名3, ... ...數組名n

Erase函數語句對靜态數組和動态數組采取不同的行為,對于靜态數組使用Erase語句時數組仍然存在,但起内容被清空,而動态數組使用Erase語句時将删除整個數組結構并釋放動态數組。

1、靜态數組

下面舉例說明,首先是靜态數組:

VBA數組(五)數組函數2

數組中聲明了靜态數組MyArr1(5)為整型資料類型和MyArr2(5)字元串資料類型。,通過循環給兩個數組指派,

立即視窗顯示MyArr1(2)的值為2,MyArr2(2)的值為第2。然後用Erase函數清除數組,清除數組後MyArr1(2)值為0,而清除數組之MyArr2(2)值為 “ ” 即空值。是以實際上Erase函數對不同資料類型的靜态數組影響不同,具體如下表:

VBA數組(五)數組函數2
VBA數組(五)數組函數2

2、動态數組

對于動态數組,示例如下圖:

VBA數組(五)數組函數2
VBA數組(五)數組函數2

數組中聲明了動态數組MyArr1()為整型資料類型和MyArr2()字元串資料類型。通過redim語句重新定義數組的大小,然後通過循環給兩個數組指派,

立即視窗顯示MyArr1(2)的值為2,MyArr2(2)的值為第2。然後用Erase函數清除數組,再次運作debug.print,程式會在Erase語句後報錯。因為此時動态數組在使用Erase語句後已經不存在了。

VBA數組(五)數組函數2
VBA數組(五)數組函數2

Split函數

Split函數把一個文本字元串按照指定的分隔符分開,傳回一個一維Variant變體型數組,該數組的最小索引号為0為下界。

Split函數也算是一種建立數組方式。它的文法為:

變體型變量=split(expression,[delimiter] [,limit] [,compare])

它的四個參數,通常使用前兩個。後兩個了解即可。

1、參數expression必需,為String型,即要拆分成數組的字元串。

2、參數delimiter可選,參數為拆分的分隔符,如果省略則使用空格做為分隔符。

3、參數limit可選,為Long型,要傳回的字元串數,通常省略不指定。

4、參數compare可選,指定比較的方法。(不常用,後面會用示例簡單說明。)

下面通過簡單的示例來示範下,将“www.google.com”按“. ”來拆分。

VBA數組(五)數組函數2
VBA數組(五)數組函數2

示例中首先聲明了Arr1為變體型變量,變量i為整形變量。

然後通過split函數将字元串www.google.com按.号拆分成數組,傳回Arr1的一維數組。該數組一維的索引号下屆為0。(這個不受Option Base語句的影響。)

然後通過循環從0,也可以用LBound(arr1)開始到UBound(Arr1)即數組的上界,循環在立即視窗中顯示數組中的每個元素,比較簡單。

函數中的第三參數limit為傳回的字元串數,通常是不指定的。下面通過示例簡單介紹下如何使用:

VBA數組(五)數組函數2
VBA數組(五)數組函數2

如果将上面示例修改下。在Split函數中加入第三參數limit參數為2,即要求拆分成兩個字元串。

Split函數第一個按"."字元拆開之後為“www”,後面一段整體"google.com"作為一個字元串,因為已經達到兩個字元串。第二個"."不會再拆分。

第四參數compare可選,是指定比較的方法,有以下三種。預設為vbBinaryCompare。

VBA數組(五)數組函數2
VBA數組(五)數組函數2

第四參數主要的用處是在拆分分隔符時,如果用預設的vbBinaryCompare是區分字母大小寫,而如果用vbTextCompare是不區分大小寫的。下面通過示例簡單示範下:

VBA數組(五)數組函數2
VBA數組(五)數組函數2

示例中對于同樣的"ABCabcABC?imageView2/2/w/1620"的字元串,都将“a”作為分隔符去拆分。第一個Split函數選擇預設的vbBinaryCompare是區分字母大小寫的。那麼隻有“a”一個分隔符,會拆分成兩個“ABC”和“bcABC”兩個字元。

而第二個Split函數選擇vbTextCompare是不區分大小寫的,那麼"A"和"a"都是分隔符,是以分割的結果是第一個為空值“ ”,第二個為“BC”,第三個為“bc”,第四個為“BC。兩個參數值就決定是否區分大小寫。

VBA數組(五)數組函數2
VBA數組(五)數組函數2

Join函數

上面介紹Split函數是将字元串分割,然後傳回一個一維數組。那麼Join函數正相反,Join函數是将一個一維數組裡的元素使用指定的分隔符連接配接成一個新的字元串傳回。

它的文法如下:

字元串變量=Join(sourcearray,[delimiter])

1、參數sourcearray必需,為String型或者Variant型,指定包含被連接配接的元素的數組。下屆可以是任意值。

2、參數delimiter可選,為String字元串型,用來連接配接數組各元素的分隔符。如果沒有指定該參數,那麼使用空格作為分隔符。

Join函數相對較簡單,下面通過簡單示例進行介紹:

VBA數組(五)數組函數2
VBA數組(五)數組函數2

示例中聲明了Str1和Str2為字元串型變量,Arr1為變體型。首先通過Array函數建立了Arr1數組。

通過Join函數用"和"(注意字元串型需要加引号),連接配接Arr1中的元素傳回給Str1變量。第二個Join函數省略了第二參數,即預設用空格連接配接Arr1中元素傳回給Str2變量。

VBA數組(五)數組函數2

端午節快樂

VBA數組(五)數組函數2

本節主要介紹了Erase函數,Split函數和Join函數,VBA數組中的函數介紹完畢,後續會介紹動态數組等内容,祝大家粽子節快樂。