Class06. 数组

定义

下面是几种常见定义数组的方法。

' 定义一个一维数组,数据类型为Variant,长度从0到5,实际控件有六个,长度为5
Dim arr(5) as String
' 定义一个一维数组,数据类型为Variant,长度从1到5,实际控件有六个,长度为5
Dim arr(1 to 5) as String
' 可以省略As后面部分,等于 Dim arr2 () as Variant
Dim arr(5)
' 一维数组,下标从0开始
arr2 = Array("你好", "世界")
' 一维数组,下标从0开始
arr3 = [{1,2,3,4}]

计算数组长度

'数组下限:
LBOUND(数组)  '结果:一般为0
'数组上限:
UBOUND(数组)
'数组长度:
UBOUND(数组)-LBOUND(数组)+1

动态分配数组

建议打断点查看数组容量的变化。

Sub test()
    v_count = ActiveSheet.UsedRange.Rows.Count
    ReDim arr(1 To v_count) As String

    arr(1) = 1
    arr(v_count) = v_count
    ' 二次扩充数组容量
    ReDim Preserve arr(1 To 2 * v_count)
    arr(2 * v_count) = 2 * v_count

    For Each v_item In arr
        If v_item <> "" Then
            MsgBox (v_item)
        End If
    Next

End Sub

ReDim 后面如果不加 Preserve,结果会有所不同。

从区域中(Range)获取

' 可以直接将工作表中A1:E1区间内的二维表的数据写到数组中。
arr = Range("A1:E100")

Split 函数

Split 函数可以将字符串按某一个特定的分隔符分割成数组。

Sub test()
    v_Str = "A-BC-d-E-"
    arr = Split(v_Str, "-")
    MsgBox (arr(2))
End Sub

[“A”,“BC”,“d”,“E”,""]

Join 函数

Join 函数和 Split 函数相反,可以将数组按特定的字符串连接起来。

arr2 = Array("你好", "世界")
v_str = Join(arr2,"-")

“你好-世界”