调整动态数组的大小:
方法:Redim 数组名(数组大小说明) [ as 类型] 第一条赋值语句执行完后,arr数组是10行3列(延用单元格的说法,易于理解),当保留值重新定义后,效果如下图,注意观察本地窗口: 2014-3-2 16:08 上传 下载附件 (32.18 KB)
当数组扩大时,可以理解成为再最后一维上再添加一些存储空间,新添加的空间基本为空。 当数组缩小时,相当于在最后一维上切掉一些存储空间,没有切掉的值就保留了下来。 执行下列语句都会产生错误: 1.redim preserve arr(1 to 10, 3) Arr赋值后是10行3列,这个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维的下标从1到5,第2维的上标为2,下标由于省略,受option base决定。 声明大小后,可在本地窗口中展开数组变量名间的加号,一窍数组内部。 错误的用法,编译错误: 2014-3-2 16:08 上传 下载附件 (12.45 KB)
还是使用Redim 语句,但是需要加上Preserve关键字。 Redim preserve 数组名(数组大小说明) [as 类型] 数组大小说明,主要是指明数组是几维,每一维的上下标值。 注意:如果使用了 Preserve 关键字,就只能重定义数组最末维的大小,且根本不能改变维数的数目,而且修改上标值大小,下标值不能变。 示例1: 2014-3-2 16:08 上传 下载附件 (34.13 KB) 在过程级别中使用,用于为动态数组变量重新分配存储空间。 用来定义或重定义Private、Public或Dim声明过的动态数组的大小。 示例: 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)
|
|
来自: fzchenwl > 《excel精英培训》