@value 数组_Excel VBA(9) – 关于数组

749a64b4aa6124914e36ecfc84f2d18c.png

微信公众号: 真是一天世界

继变量声明之后,今天来学习一下数组变量的基础知识。
建议阅读本篇前,先复习一下
Excel VBA(6) – 声明变量那些事

  1. 什么是数组?
  2. 数组的特性
  3. 声明数组
  4. 给数组赋值
  5. 什么是多维数组
  6. 声明多维数组
  7. 动态数组
  8. 如何创建数组?
  9. 判断及清空数组
  10. 数组的最大最小索引号
  11. 如何将数组写入单元格

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 Sub5. 什么是多维数组

  • 多维数组是包含多个列表或多组数据表的数组

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 SubB. 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 SubC. 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值