【原创】VBA学习笔记(12)VBA的数组array
一 数组 array
1.1 什么是数组?具体的例子
以这个语句为例子
arr1=array(1, 2, 3)
左边:变量名=数组名
右边:数组,集合,多个元素集合,多个数据集合,
右边的单个内容,1,2,3 是数组的元素/下标变量
每个元素存储时,会标记1个(看不见的 )index 索引 下标
1.2 什么是数组,抽象的定义:数组也是变量,是一种可存储多个数据的特殊变量
VBA或其他语言里,变量是用来存储数据的。
而一般来说,1个变量只能用来存储1个数据
现在来了1个特例,有高手发明了数组的概念: 数组是一个特殊的变量,可以用来存储多个数据!(甚至是多维的多个数据!)
数组就是多个单位/元素(element)有序的,连续存储在一起作为一个整体,统一叫1个名字(数组名)
1.3 数组的特点,index有序不重复,但数组的元素却可以重复
什么叫有序?
就是数组的内容存储是有序的
index 是有序(一般是从小到大)
index也应该是连续的,暂时没见过 index不连续的情况
index也不能重复
但是数组存储的内容,是可以重复的
1.数组的index下标默认是从0开始的,比如split生成的,还有未指定index下标的,如 dim arr1(5)
2.但是数组的index下标也有从1开始的情况,比如range 赋值的变量,默认下标从1开始,如 arr2=range("b1:d5")
3.数组的index下标受控制的情况模块最前面 option base  -1
4.数组index下标最好自己定义好, 如  dim arr3(1 to 5)
Dim arr1(3)                      '其实是0-3,有4个元素
Dim arr1( 1 to 3)              '其实是1-3,有3个元素
Option base 1     
1.Sub test_array1()
2.
3.Dim arr1()
vba 字符串转数组
4.Dim arr2()
5.
6.arr1() = Range("c1:c13")
7.arr2() = Range("c1:o1")
8.
9.For i = 1 To 13
10.Debug.Print arr1(i, 1)
11.Next i
12.
13.
14.For i = 1 To 13
15.Debug.Print arr2(1, i)
16.Next i
17.
18.End Sub
1.4 数组的核心内容:就4个: 维数,每个维度大小,数据类型,数据
举例:
dim arr1(5)  as integer
dim arr2(2 to 6) as string 
dim arr3(3,5) as integer
1.数组的维数                : 数组可以是1维,2维等等,但数组的维数和嵌套不同!
2.每个维数大小          : 每个维数的 lbound()  to  ubound()
3.数组存储数据的类型: 可以是单一的,也可以是variant 变化的
4.数组存储的内容        : 每个值的具体内容
2 数组的分类
这些概念拿到前面说,是因为自己作为新手,发现很容易弄混概念,分不清什么静态数组,什么是界定清晰的数组?
数组定义和 静态动态是相关的,
数组赋值也是和这些概念相关的,比如,静态数组不能被整体赋值,动态数组赋值前,要先界定清晰 维数和大小等。
2.1 什么叫完备(界定清晰)的数组,什么叫不完备的数组?---主要是指 数组的维数,维数大小(一般不管数组的数据类型)
完备(界定清晰)数组:    数组的维数,每个维度长度都确定的数组。这样的数组可以给单一元素赋值操作,但如果是静态数组,数组不能被整体赋值。
不完备(界定清晰)数组:数组的维数,每个维度长度不确定的数组,这样的数组可以整体赋值(变相确定数组维数和大小),但是没法单一元素赋值
举例
dim arr1(5) as integer  这个就是一个界定清晰的数组!    dim arr1(5) as integer  等价于 dim arr1(0 to 5) as integer 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。