VBA数组(六)动态数组 | 您所在的位置:网站首页 › 动态数组需要以下哪个关键字重新定义 › VBA数组(六)动态数组 |
大家好,前面已经介绍过了如何声明数组、数组赋值、静态数组和数组函数等等知识点,本节主要讲解动态数组。 动态数组的定义 如果在声明数组不确定数组的大小,先不固定数组的大小,而在程序在运行时使用Redim语句重新定义数组大小即为动态数组。(而如果声明数组时即确定数组大小即为静态数组。) 声明动态数组 首先在用户窗体、模块或者过程中使用dim或public语句声明一个没有下标的数组。比如: dim 数组名称() 然后在程序过程中使用ReDim语句重新定义该数组的大小。具体完整语句如下: ReDim [Preserve] 数组名(下界 to 上界) [ as 数据类型 ] 使用ReDim语句可以反复改变数组的大小和维度,但不能用ReDim语句更改已经声明的数据类型,除非是默认的Variant所包含的数据。 使用ReDim语句对是否保留原值有两种情况: 1、不保留原值 在默认情况下,使用RdDim语句重新定义数组大小和维度时,数组中原来保存的值将全部消失。 即Redim 数组名(下标)[as 数据类型]。 下面通过几个简单的示例演示下: 首先定义Arr1为动态数组,变量i和变量j为整形变量。通过ReDim语句重新定义Arr1为一维的1到3的数组。给数组中的3个元素一次赋值。 然后用ReDim语句再次重新定义Arr1数组大小,此时在立即窗口中显示Arr1(2)元素,已经没有值了。 2、保留原值 在ReDim语句中使用Preserve关键字,只能重新定义数组最后一维的大小,并且不能改变数组的维数,但可以保持原有数组中的原来的数据。(注意使用Preserve关键字,如果ReDim重新定义最后一维的范围变小,多余的元素也是会消失的。) 同样上面的示例中,如果ReDim语句加Preserve再次重新定义Arr1数组大小,此时在立即窗口中显示Arr1(2)元素还是原来的值。 示例 下面通过其他两个简单的示例来帮助理解动态数组: 首先声明了动态数组Arr1,声明变量i和变量j为长整型变量。 使用Range("a65536").End(xlUp).Row,即使用单元格对象的END属性,获得A列最后一行的行号。(在单元格对象属性(二)章节有介绍。)即得到A列有值得单元格的数量。 通过ReDim语句重新定义Arr1数组的大小,范围是从1 to i。实际就是有值得单元格的行号范围。 通过For循环语句将单元格 Range("a" & j).Value的值赋值给Arr1(j)。 最后在立即窗口中显示Arr(3)元素值为range("A3")的值。 首先声明了动态数组Arr1,变量i和变量j为整形变量。 通过ReDim语句重新定义Arr1数组大小为二维数组,第一维范围为1到2,第二维范围为1到3。 通过双循环嵌套结构,将Cells(i,j)单元的值赋值给Arr1(i,j)元素。(实际上数组中元素的两个维度索引号和单元格的cells属性的行号和列号一一对应。) 这种方式在很多数组应用的案例中很常见,注意理解。 本节主要介绍动态数组的内容,有问题可以给我留言,祝大家学习快乐。 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |