一、数组的分类
1.按维数分:一维,二维,多维
我是这样理解的,线是由点组成的,面是由线组成的,一维数组就像一条线,如我们工作表里的行,列,一行里的单元格,一列里的单元格就是数组里的元素,我通常把它叫做数组里的成员,二维数组就像一个面,如我们的工作表就是一个平面,工作表里的单元格也是二组数组里的元素.
2.按空间结构大小是否改变分:静态数组和动态数组
Option Explicit Sub 静态数组1()'这个是表示8行1列的一维数组 Dim arr1(1 To 8) End Sub Sub 静态数组2()'这个是表示8行2列的二数数组 Dim arr1(1 To 8, 1 To 2) End Sub Sub 静态数组3()'这个是表示9行1列的一维数组 Dim arr1(8) End Sub Sub 静态数组4()' 这个是表示9行3列的二维数组 Dim arr1(8, 2) End Sub
上面是静态的数组 =========================================================== Option Explicit Sub 动态数组1() Dim x% Dim arr1()'定义动态数,为什么要定义动态数组呢,是因为我们刚开始时不知数组的空间结构,所以用dim arr1() x = 5 ReDim arr1(1 To 5)'由于我们后来可以确定它的大小 ,所以用关键词Redim重新给数组arr1分配空间,5行1列的一维数组 x = 10 ReDim arr1(1 To 10)'又重新给数组arr1分配空间,10行1列的一维数组,不过大家要注意,如果没有加Preserve ,重新分配空间之后,会删除前面的值,也就是说不会 ''保留数组原有值,这一点很重要.同学们一定要记住. End Sub Sub 动态数组2() Dim x% Dim arr1() x = 5 x = 10 ReDim arr1(1 To 10, 1 To x) End Sub ReDim arr1(1 To 5, 1 To x)'表示5行5列的二维数组,有的同学说,老师,可不可以把定义成这样,Dim arr1(1 to x,1 to 5),答案是否定的,不可以,也就是我们只能改变末维的大小,如三维的 Redim (1 to 1 ,1 to 1, 1 to x),也就是说我们变量只能放在三维上,不能放在一维Redim (1 to x,1 to 1, 1 to 1), 也不能放在二维上 如Redim (1 to x,1 to x, 1 to 1), 正确的定义:Redim (1 to 1 ,1 to 1, 1 to x), 错误的定义:Redim (1 to x,1 to 1, 1 to 1) 错误的定义:Redim (1 to x,1 to x, 1 to 1) Sub 动态数组3() Dim x% Dim arr1() x = 1 ReDim Preserve arr1(1 To 2, 1 To x)'表示2行1列的二维数组且保留原有值 x = 2 ReDim arr1(1 To 2, 1 To x)'表示2行2列的二维数组且保留原有值 End Sub
上面是动态数组 ===================================================
下面是一段对白: 小白学生说:,我的老鼠老师,你说了那么一大堆,
汉……
哇……啦……啦……啦……啦……啦……
看得我云里雾里了,我都晕倒电脑旁边
老鼠老师说:我的亲:您可千万别晕啊,您晕了没有人关电脑了,我可不会帮你关机!
小白学生说:那老鼠老师您有没有什么绝招让我们不晕啊?
老鼠老师说:有啊,其实,我早就告诉您了,那一个神器,只是你上课不认真呢?
小白学生说:我的好老师,你就别买关子了,就告诉我们吧
老鼠老师说:再学习一遍一楼的帖
小白学生说:老鼠老师,我明白了,视图菜单,本地窗口,把光标点到你要测试代码里,F8逐步运行,查看本地窗口,哈哈,点一个那个节点+号,原来数组的空间结构一目了然了。明白了明白了。真开心啊
老鼠老师说:真聪明
总结一下,不开玩笑了,言归正传 我们现在举一个实例来学习 打开excel程序--->alt+f11---->插入菜单--->插入模块---> 把下面代码复制到模块里去 Sub 动态数组理解() Dim arr1(), x% '定义变量 x = 1 '第一次给x赋值为1 ReDim arr1(1 To 2, 1 To x) '给数组arr1分配空间,2行1列的二维数组 arr1(1, 1) = "佛山小老鼠" '把"佛山小老鼠"赋值给arr1里第1行第1列位置 arr1(2, 1) = "学生" '把"学生"赋值给arr1里第1行第2列位置 x = 2 '第二次给x赋值为1 ReDim Preserve arr1(1 To 2, 1 To x) '再给数组arr1重新分配空间,2行2列的二维数组 '且保留原有值 arr1(1, 2) = 99 '把99赋值给数组arr1里第1行第2列位置 arr1(2, 2) = 88 '把88赋值给数组arr1里第1行第2列位置 End Sub 同学们注意,把光标点到上面这段代码里 F8逐上步运行,按照老师下面的截图步骤
|