楼主 houtian23 |
本人是新手,刚开始学习数组不久,有些还有了解透,如有错误高手轻拍啊 学习他的目的主要是看中它运行速度快,而且不用对单元格操作,可以避免破坏单元格的数据 1、数组的好处和坏处 A、数组是存在内存中的,读写速度比单元格快,这个理解为数组是电脑的内存,单元格是电脑的硬盘,内存的读取速度比硬盘快很多的 B、数组不用对单元格进行操作,这样可以避免破坏单元格的数据 C、数组的坏处就在于excel关闭后数据就会消失,单元格则不会,如果需要保存数据则需要将数组写入单元格,这个跟电脑的内存和硬盘一个道理。 2、数组的声明 数组声明跟变量声明一样,都是用dim语句,不同的是数组变量是用括号的 Dim Arr() Dim Arr() as long dim Arr(1 to 100,1 to 10) dim arr(10) 以上是常见的数组声明方式,前面两个是动态数组,使用之前需要用redim来声明数组元素的个数及维度,语法是redim Arr(1 to x),一个动态数组可以N次用redim语句,每次需要时便可用redim改变数组大小,需要注意的是redim重置数组后会清空数组的值,如果需要可以用preserve保留数组的值,如 redim preserve Arr(1 to y)便可以将数组的值保留下来。但注意preserve只能重置最后一维的大小,数组Arr(1 to 10,1 to 10) 使用redim preserve,只能是redim preserve arr(1 to 10,1 to y),否则会返回下标越界的错误。 数组声明时可以指定数据类型,如果数组元素是包含多种数据类型,特别是将单元格数值赋予数组的时候,注意不要指定数据类型,否则会返回类型不匹配的错误,例如单元格数据包含文本、数值的但数组声明数据类型为byte,赋值就会出错。 后边两个是静态数组,声明时就指定了维数及大小,不可以使用redim preserve语句重置,此时会返回数组维数已定义的错误 3、数组的上界与下界 A、数组默认下界是0,如dim arr(10)的下界是0,上界是9,可以用Option Base 1语句强制数据下界为1,必须放在所有模块之前,注意Option Base后边只能是1或者0 B、可以声明数组或者重置数组是指定数组上下界,如dim Arr(1 to 100 )就是个下界为1上界为100的一位数组,注意数组上界必须大于下界,而且下界不一定是1,例如dim Arr(-10 to 100 ),dim Arr(10 to 100 )。 4、数组的维度 A、VBA数组的维度最大可以是60维,arr(7)是一个一位数组,arr(1 to10 ,1 to 9)是个二维数组,arr(1 to 10 ,1 t0 11 ,1 to 12)是三维数组,维度之间用逗号分隔 B、日常用的最多的是二维数组,因为表格是由行与列组成的,需要注意的是VBA的数组总是横向的(因为数组元素之间用逗号分隔),因此如果向一列写入数组必须要transpose转置;将单元格区域赋值给数组,总是二维数组,即使该区域是一列或者一行 5、数组的赋值 A、循环赋值
6、取出数组元素 每个数组元素都有一个索引号,一维数组就是arr(i),二维数组就是arr(i,j),三维数组就是arr(i,j,x),以此类推,因此可以通过循环变量来取出符合要求的元素 例子:将数组中大于5的元素取出来
|
2楼 houtian23 |
占楼编辑 |
3楼 houtian23 |
占楼编辑 |
4楼 mmice |
没更新啦 |