【原创】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小时内删除。
发表评论