Excel-VBA 快速上手(三、数组和字典)


一、数组


1.1. 初始值数组


这种数组在创建的同时就需要把元素填充好,比较适合元素内容不多、已知、固定时使用,其语
法为: 变量 = Array(元素1, 元素2, 元素n),然后通过元素坐标来访问数组中的元素,坐标从 0 开始计算,
既第一个元素的坐标是 0 ,第二个元素坐标是 1,第三个元素坐标是2 ,以此类推

示例代码

Sub main()
  '定义初始值数组
  Dim items
  items = Array(1, 2, 3, 4, 5)
  '访问数组中坐标为2的元素,既元素值3
  Debug.Print items(2)
End Sub

1.2. 静态数组


这种一般用在元素内容无法确定,需要后期填充,但元素数量确定的场景,有两种定义语法:

  1. 通过 Dim 变量名(终点坐标) 定义,这种定义方式起始坐标默认是 0
  2. 通过 Dim 变量名(起始坐标 To 终点坐标) 定义,这种定义方式自己指定起点和终点坐标

示例代码

Sub main()
  '起始坐标默认为0
  Dim items(5)
  items(0) = 1
  items(1) = 2
  items(2) = 3
  items(3) = 4
  items(4) = 5
  Debug.Print items(2)
  
  '自定义起始坐标
  Dim items2(1 To 5)
  items2(1) = 1
  items2(2) = 2
  items2(3) = 3
  items2(4) = 4
  items2(5) = 5
  Debug.Print items2(2)
End Sub

1.3. 动态数组


这种一般用在元素内容和元素长度都不确定的场景,先用 Dim 变量名() 声明数组,然后当数组长度确定时,在通过
ReDim 变量名(起始坐标 To 终点坐标) 来设置数组长度

示例代码

Sub main()
  Dim items()
  ReDim items(1 To 5)
  items(1) = 1
  items(2) = 2
  items(3) = 3
  items(4) = 4
  items(5) = 5
  Debug.Print items(2)
End Sub

1.4. 二维数组


二维数组对于学习 vba 来说非常重要,既然学习 vba 的目的是为了扩展 Excel 的功能,那么就肯定避免不了和
单元格打交道,而 vba 中,很多选取单元格的函数,都是以二维数组的形式返回的

二维数组非常好理解,其本质就是数组的元素仍是数组,一般习惯将第一维中的每个元素称作行,第二维中的每个
元素称作列,一个三行三列的二维数组的结构大概如下图:

二维数组结构
定义二维数组时要指定两个长度 :

  1. 第一维数组的长度,既数组有几行
  2. 每个二维数组的长度,既每行中有几列

其定义语法为: Dim 变更名( 一维数组起始坐标 To 一维数组终点坐标, 二维数组起始坐标 To 二维数组终点坐标)

示例代码

一个两行三列的数组,注意:二维数组在填充和取值时,要定位到列的坐标:

Sub main()
  '定义两行三列的二维数组
  Dim items(1 To 2, 1 To 3)
  '为二维数组赋值
  For x = 1 To 2
    For y = 1 To 3
      items(x, y) = x + y
    Next y
  Next x
  '二维数组取值, 第一行第一列的值
  Debug.Print items(1, 1)
End Sub

1.4.1. 单元格与二维数组


选取 Excel 中的单元格并赋值给二维数组,或将二维数组赋值到单元格都是 vba 开发中常见的操作

例1:选取三行三列的单元格到二维数组中

单元格导入二维数组
代码:

Sub main()
  Dim items
  items = Range("
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值