分享

【烟花原创】VBA零基础之第113篇VBA数组(三)

 fzchenwl 2015-04-02

 

调整动态数组的大小:


A不保留数组原有值调整大小

方法:Redim 数组名(数组大小说明) [ as 类型]

第一条赋值语句执行完后,arr数组是103列(延用单元格的说法,易于理解),当保留值重新定义后,效果如下图,注意观察本地窗口:

2014-3-2 16:08 上传

下载附件 (32.18 KB)


数组调整成为10行2列,原有在10行2列中的值全保留下来了。


当数组扩大时,可以理解成为再最后一维上再添加一些存储空间,新添加的空间基本为空。

当数组缩小时,相当于在最后一维上切掉一些存储空间,没有切掉的值就保留了下来。


执行下列语句都会产生错误:

1.redim preserve arr(1 to 10, 3)

Arr赋值后是103列,这个reim语句最后一维由于省略了下标值,缺省为0,修改了下标值,相当于修改了下标值。

2. redim preserve arr(1 to 5,1 to 3)

保留原有值调整大小时,只能修改最后一维的大小,产生下标越界错误。3.redim preserve arr(1 to 10,1 to 3) as long

编译错误,不能修改变数组元素的数据类型。

4.redim preserve arr(1 to 10,1 to 3,1 to 4)

保留原有值调整大小时,数组的维数不能变,产生下标越界错误。

数组大小说明,主要是指明数组是几维,每一维的上下标值。

例如 redim arr(1 to 5,2),指明调整大小数组为2维,第1维的下标从15,第2维的上标为2,下标由于省略,受option base决定。


声明大小后,可在本地窗口中展开数组变量名间的加号,一窍数组内部。


错误的用法,编译错误:

2014-3-2 16:08 上传

下载附件 (12.45 KB)


B保留数组原有值调整大小

还是使用Redim 语句,但是需要加上Preserve关键字。

Redim preserve 数组名(数组大小说明) [as 类型]

数组大小说明,主要是指明数组是几维,每一维的上下标值。

注意:如果使用了 Preserve 关键字,就只能重定义数组最末维的大小,且根本不能改变维数的数目,而且修改上标值大小,下标值不能变。

示例1

2014-3-2 16:08 上传

下载附件 (34.13 KB)

在过程级别中使用,用于为动态数组变量重新分配存储空间。

用来定义或重定义PrivatePublicDim声明过的动态数组的大小。

示例:

Dim arr()

Redim arr(1 to 3,1 to 4)

Redim arr(1 to 1)

Redim arr(1,2,3)

注意:但是不能在将一个数组定义为某种数据类型之后,再使用 ReDim 将该数组改为其它数据类型,除非是 Variant 所包含的数组。

正确的用法:

Dim arr1 as variant

Redim arr1(1,2) as string

Redim arr1(-1 to 1,10 to 11) as long

F8运行时注意本地窗口中arr1的变化,如下图:

2014-3-2 16:08 上传

下载附件 (30.16 KB)


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多