VBA数组 - VBA教程

什么是数组?

我们非常清楚地知道,一个变量是一个容器来存储值。有时开发者在一个位置,在一个单一的变量一次持有多个值。当一系列值被存储在一个单独的变量,那么它被称为数组变量。

声明数组

数组声明以其它变量的方式同样,只是数组变量的声明使用圆括号声明。在下面的例子中,数组大小在括号中指定。

'Method 1 : Using Dim
Dim arr1()    'Without Size

'Method 2 : Mentioning the Size
Dim arr2(5)  'Declared with size of 5

'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")
  1. 虽然,数组大小显示为5,它可以容纳6个值作为数组索引从零开始。

  2. 数组索引不能为负数。

  3. VBScript数组可以存储任何类型的变量数组。因此,一个阵列可以存储的整数,串或字符在一个单一的数组变量。

赋值数组

数值通过指定数组索引值对值中的每一个将被分配被分配到阵列。它可以是一个字符串。

例子 :

添加一个按钮,并添加以下功能

Private Sub Constant_demo_Click()
  Dim arr(5)
  arr(0) = "1"           'Number as String
  arr(1) = "VBScript"    'String
  arr(2) = 100            'Number
  arr(3) = 2.45            'Decimal Number
  arr(4) = #10/07/2013#  'Date
  arr(5) = #12.45 PM#    'Time

  msgbox("Value stored in Array index 0 : " & arr(0))
  msgbox("Value stored in Array index 1 : " & arr(1))
  msgbox("Value stored in Array index 2 : " & arr(2))
  msgbox("Value stored in Array index 3 : " & arr(3))
  msgbox("Value stored in Array index 4 : " & arr(4))
  msgbox("Value stored in Array index 5 : " & arr(5))
End Sub

当执行函数输出如下所示:

Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM

多维数组

数组并不仅仅局限于单一的维度,最多可有60维度。最常用的是二维数组。

例子 :

在下面的例子中,一个多维阵列具有3行和4列声明。

Private Sub Constant_demo_Click()
  Dim arr(2,3) as Variant    ' Which has 3 rows and 4 columns
  arr(0,0) = "Apple" 
  arr(0,1) = "Orange"
  arr(0,2) = "Grapes"           
  arr(0,3) = "pineapple" 
  arr(1,0) = "cucumber"           
  arr(1,1) = "beans"           
  arr(1,2) = "carrot"           
  arr(1,3) = "tomato"           
  arr(2,0) = "potato"             
  arr(2,1) = "sandwitch"            
  arr(2,2) = "coffee"             
  arr(2,3) = "nuts"            

  msgbox("Value in Array index 0,1 : " &  arr(0,1))
  msgbox("Value in Array index 2,2 : " &  arr(2,2))

End Sub

当执行函数输出如下所示:

Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee

Redim 语句

ReDim语句用于声明动态数组变量并分配或重新分配存储空间。

ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
  • Preserve - 可选参数,用来当改变最后一维的大小来保存数据在现有的数组。

  • varname - 必需的参数,它表示的变量,它应该遵循标准的变量命名约定的名称。

  • subscripts - 必需的参数,它表示该数组大小。

例子

在下面的例子中一个数组已经被重新定义,在保存的值时该数组的现有大小被改变。

注:在调整大小的数组小于它最初的值,在消除元素的数据将会丢失。

Private Sub Constant_demo_Click()
  Dim a() as variant
  i=0
  redim a(5)
  a(0)="XYZ"
  a(1)=41.25
  a(2)=22

  REDIM PRESERVE a(7)
  For i=3 to 7
  a(i)= i
  Next

  'to Fetch the output
  For i=0 to ubound(a)
    Msgbox a(i)
  Next
End Sub

当执行函数输出如下所示:

XYZ
41.25
22
3
4
5
6
7

数组方法:

在VBScript中的各种内置函数,帮助开发者有效地处理数组。所有正在使用中一起选择数组方法在下面列出。请点击方法名详细了解。

函数 描述
LBound 此函数返回一个整数,对应于给定的数组中最小的下标。
UBound 此函数返回一个整数,对应于给定数组的最大下标。
Split 此函数返回包含值的指定数量的数组。分割后基于分隔符。
Join 此函数返回一个包含子字符串数组中的指定数量的字符串。这是Split 方法的完全相反的作用。
Filter 此函数返回零的数组包含字符串数组基于一个特定的过滤标准的子集。
IsArray 此函数返回一个布尔值,指示输入变量是否是一个数组。
Erase 此函数恢复所分配的内存为数组变量。