• 系统环境:Windows 10
  • Excel:2010版本


今天讲讲数组,针对一维和二维数组

二维数组可以简单的理解为一个工作表

一维数组可以理解为工作表的一行

数组优点(对比工作表):执行效率高,因为数组直接在内存中

数组缺点(对比工作表):目视化差,没有工作表这么一目了然



Part 1:广义的变量定义

  • 在我们以前的例子中,对于变量的使用,未要求进行先声明再使用,即采用隐式声明
  • 对于VBA也可以采用显式声明,程序较大时,优点比较明显,避免变量的混乱,程序异常错误
  • 变量的定义,常用关键字Dim,Public,Private,Static
  • 这四个关键字的区别:
  1. 动态变量和静态变量(Dim与Static)
  2. 变量的作用域和生命周期不同


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:数组的定义

    1. 数组定义分为静态数组动态数组
    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。排版和细节略作修改,发于头条