- 系统环境:Windows 10
- Excel:2010版本
今天讲讲数组,针对一维和二维数组
二维数组可以简单的理解为一个工作表
一维数组可以理解为工作表的一行
数组优点(对比工作表):执行效率高,因为数组直接在内存中
数组缺点(对比工作表):目视化差,没有工作表这么一目了然
Part 1:广义的变量定义
- 在我们以前的例子中,对于变量的使用,未要求进行先声明再使用,即采用隐式声明
- 对于VBA也可以采用显式声明,程序较大时,优点比较明显,避免变量的混乱,程序异常错误
- 变量的定义,常用关键字Dim,Public,Private,Static
- 这四个关键字的区别:
- 动态变量和静态变量(Dim与Static)
- 变量的作用域和生命周期不同
Dim | Static | Public | Private | |
动态/静态 | 动态 | 静态 | - | - |
作用域 | 定义的过程中 | 定义的过程中 | 所有模块中 | 所定义的模块中 |
定义位置 | 过程中 | 过程中 | 模块第一个过程前 | 模块第一个过程前 |
- 其中Private可用Dim代替
- 静态变量只要Excel不关闭,该变量中的值就会保存,但仅仅在定义的过程中有效
- Dim定义的动态变量随着过程执行完毕后就释放
代码
Sub test()
Dim X As Integer
Static Y As Integer
X = 1
Y = 1
X = X + 1
Y = Y + 1
End Sub
- 第二次执行该过程的时候Y=2,X=0
- 即Y保留上次执行的结果,X进行了初始化
图1 代码截图
Part 2:数组的定义
- 数组定义分为静态数组,动态数组
- 这里的静态动态与普通变量的不同,这里静态指的是维度大小不变
- 动态数组代码
Sub test()
Dim aintTest1()
Dim aintTest2()
aintTest1 = [{1,2,3,4,5}]
aintTest2 = [{1;2;3;4;5}]
End Sub
图2 动态数组
- 静态数组代码
Sub test()
Dim aintTest(4)
Dim intI As Integer
For intI = 0 To 4
aintTest(intI) = intI + 1
Next intI
End Sub
图3 静态数组
数组的访问是通过索引,从0开始
aintTest(4)表示5个元素的数组,索引从0开始,4结束
以上,为本次的介绍内容,下回见。
本文首发于微信公众号:Excel高效办公之VBA。排版和细节略作修改,发于头条
