VBA数组(五)数组函数2

论坛 期权论坛 期权     
Excel和Access学习笔   2019-6-16 04:23   3522   0

大家好,上节介绍了VBA数组中的LBound和UBound等函数,本节介绍剩余的数组函数,Erase函数、Split函数和Join函数。


Erase函数
Erase函数的用处已经体现在字面上,像一个橡皮擦。可以重新初始化静态数组的元素或者释放动态数组的存储空间。
在Erase语句中只需要给出数组名即可,不能带括号和下标。语法格式如下:
Erase 数组名1,数组名2,数组名3, ... ...数组名n
Erase函数语句对静态数组和动态数组采取不同的行为,对于静态数组使用Erase语句时数组仍然存在,但起内容被清空,而动态数组使用Erase语句时将删除整个数组结构并释放动态数组。
1、静态数组

下面举例说明,首先是静态数组:


数组中声明了静态数组MyArr1(5)为整型数据类型和MyArr2(5)字符串数据类型。,通过循环给两个数组赋值,
立即窗口显示MyArr1(2)的值为2,MyArr2(2)的值为第2。然后用Erase函数清除数组,清除数组后MyArr1(2)值为0,而清除数组之MyArr2(2)值为 “ ” 即空值。所以实际上Erase函数对不同数据类型的静态数组影响不同,具体如下表:



2、动态数组

对于动态数组,示例如下图:



数组中声明了动态数组MyArr1()为整型数据类型和MyArr2()字符串数据类型。通过redim语句重新定义数组的大小,然后通过循环给两个数组赋值,
立即窗口显示MyArr1(2)的值为2,MyArr2(2)的值为第2。然后用Erase函数清除数组,再次运行debug.print,程序会在Erase语句后报错。因为此时动态数组在使用Erase语句后已经不存在了。



Split函数
Split函数把一个文本字符串按照指定的分隔符分开,返回一个一维Variant变体型数组,该数组的最小索引号为0为下界。
Split函数也算是一种创建数组方式。它的语法为:
变体型变量=split(expression,[delimiter] [,limit] [,compare])
它的四个参数,通常使用前两个。后两个了解即可。
1、参数expression必需,为String型,即要拆分成数组的字符串。
2、参数delimiter可选,参数为拆分的分隔符,如果省略则使用空格做为分隔符。
3、参数limit可选,为Long型,要返回的字符串数,通常省略不指定。
4、参数compare可选,指定比较的方法。(不常用,后面会用示例简单说明。)
下面通过简单的示例来演示下,将“www.google.com”按“. ”来拆分。




示例中首先声明了Arr1为变体型变量,变量i为整形变量。
然后通过split函数将字符串www.google.com按.号拆分成数组,返回Arr1的一维数组。该数组一维的索引号下届为0。(这个不受Option Base语句的影响。)
然后通过循环从0,也可以用LBound(arr1)开始到UBound(Arr1)即数组的上界,循环在立即窗口中显示数组中的每个元素,比较简单。
函数中的第三参数limit为返回的字符串数,通常是不指定的。下面通过示例简单介绍下如何使用:





如果将上面示例修改下。在Split函数中加入第三参数limit参数为2,即要求拆分成两个字符串。
Split函数第一个按"."字符拆开之后为“www”,后面一段整体"google.com"作为一个字符串,因为已经达到两个字符串。第二个"."不会再拆分。
第四参数compare可选,是指定比较的方法,有以下三种。默认为vbBinaryCompare。




第四参数主要的用处是在拆分分隔符时,如果用默认的vbBinaryCompare是区分字母大小写,而如果用vbTextCompare是不区分大小写的。下面通过示例简单演示下:



示例中对于同样的"ABCabcABC"的字符串,都将“a”作为分隔符去拆分。第一个Split函数选择默认的vbBinaryCompare是区分字母大小写的。那么只有“a”一个分隔符,会拆分成两个“ABC”和“bcABC”两个字符。
而第二个Split函数选择vbTextCompare是不区分大小写的,那么"A"和"a"都是分隔符,所以分割的结果是第一个为空值“ ”,第二个为“BC”,第三个为“bc”,第四个为“BC。两个参数值就决定是否区分大小写。


Join函数
上面介绍Split函数是将字符串分割,然后返回一个一维数组。那么Join函数正相反,Join函数是将一个一维数组里的元素使用指定的分隔符连接成一个新的字符串返回。
它的语法如下:
字符串变量=Join(sourcearray,[delimiter])
1、参数sourcearray必需,为String型或者Variant型,指定包含被连接的元素的数组。下届可以是任意值。
2、参数delimiter可选,为String字符串型,用来连接数组各元素的分隔符。如果没有指定该参数,那么使用空格作为分隔符。
Join函数相对较简单,下面通过简单示例进行介绍:



示例中声明了Str1和Str2为字符串型变量,Arr1为变体型。首先通过Array函数创建了Arr1数组。
通过Join函数用"和"(注意字符串型需要加引号),连接Arr1中的元素返回给Str1变量。第二个Join函数省略了第二参数,即默认用空格连接Arr1中元素返回给Str2变量。



端午节快乐本节主要介绍了Erase函数,Split函数和Join函数,VBA数组中的函数介绍完毕,后续会介绍动态数组等内容,祝大家粽子节快乐。


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:45
帖子:9
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP