欢迎大家来到IT世界,在知识的湖畔探索吧!
继变量声明之后,今天来学习一下数组变量的基础知识。
建议阅读本篇前,先复习一下
Excel VBA(6) – 声明变量那些事
- 什么是数组?
- 数组的特性
- 声明数组
- 给数组赋值
- 什么是多维数组
- 声明多维数组
- 动态数组
- 如何创建数组?
- Array 函数
- Split 函数
- Range 对象
- 判断及清空数组
- 数组的最大最小索引号
- 如何将数组写入单元格
1. 什么是数组?
- 数组就是一个列表或一组数据表
- 是同类型多个变量的集合
2. 数组的特性
- 数组中的元素共享一个数组名
- 数组中的元素按顺序存储在数组中,以索引号区分
3. 声明数组
Public / Dim 数组名 (a to b) As 数据类型
- Public 和 Dim 二选一,作用域不同
- a 和 b 都是整数,是起始和终止索引号
- 如果括号内只使用一个自然数,则默认起始号是 0
- 例如,Dim Arr (15) As String,表示数组元素为 0 到 15
- 如果只写一个自然数,又希望从 1 起始,可以在模块的第一句写入 “Option Base 1”
4. 给数组赋值
示例 1:
Sub number ()
Dim arr (1 to 5) As Integer
arr(1) = 1
arr(2) = 2
arr(3) = 3
arr(4) = 4
arr(5) = 5
End Sub
示例 2:
Sub number ()
Dim arr (1 to 5) As Integer, i As Integer
For i = 1 to 5
arr(i) = i
Next
End Sub
5. 什么是多维数组
- 多维数组是包含多个列表或多组数据表的数组
6. 声明多维数组
Public / Dim 数组名 (a to b, c to d) As 数据类型
- 不同维度之间用 “,” 隔开
7. 动态数组
- 声明数组时,如果不确定数组大小,可以设置为动态数组
- 动态数组格式为:
- Dim 数组名称 ()
- 需要的时候,可以用 ReDim 语句指定动态数组大小
- 定义动态的数组首先要声明,Dim arr(),然后用ReDim命令来设置数组的大小:
- ReDim 数组名称 (a to b) As 数据类型
- 静态数组同样可以用 ReDim 命令重新设置大小
8. 如何创建数组?
A. Array 函数
- 如果用 Array 函数创建数组,定义变量时,变量类型必须为 Variant 类型
- 数组索引号默认从 0 开始,除非在模块第一句中写入了”Option Base 1″
示例:
Sub 月份 ()
Dim arr As Variant
arr = Array(1,2,3,4,5,6,7,8,9,10,11,12)
End Sub
B. Split 函数
- Split 把文本字符串按照指定的分隔符分开,返回一个一维数组
- 无论是否写入”Option Base 1″,Split 函数定义的数组最小索引号都是 0
示例:
Sub 月份 ()
Dim arr As Variant
arr = Split (“1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月,12月”,”,”) ‘标红的第2个参数将分隔符定义为”,”
End Sub
C. Range 对象
- Range 对象可以把单元格区域的值赋值给变量
- 单元格区域的大小必须与数组大小相同
示例:
Sub RngArr ()
Dim arr As Variant
arr = Range (“A1:C2”).Value ‘将 A1:C2 单元格的值指定给变量 arr
Range (“E1:G2”).Value = arr ‘将变量 arr 的值写入 E1:G2 单元格
End Sub
9. 判断及清空数组
A. IsArray 函数
IsArray(variablename)
- 判断指定的输入变量是否是数组变量
- 数返回一个布尔值
B. Erase 函数
Erase ArrayName
- 固定数值数组,数组中的每个元素重置为零
- 固定字符串数组,数组中的每个元素被重置为零长度 “”
- 对象数组,数组中的每个元素被重置为特殊值 Nothing
10. 数组的最大最小索引号
- UBound 和 LBound 函数分别可以计算数组的最大和最小索引号
- 格式如下:
UBound (arr)
LBound (arr)
11. 如何将数组写入单元格
- 使用 Range 对象
示例:
Sub 月份 ()
Dim arr As Variant
arr = Array(1,2,3,4,5,6,7,8,9,10,11,12)
Range (“A1:A12”).Value = Application.WorksheetFunction.Transpose (arr) ‘ 数组写入单元格的时候,都是横向按行写入的,如果要竖向按列写入,需要用 Transpose 函数行列转换一下
End Sub
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/59147.html