十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
array(2,2)是多维数组的访问方式,其数组的定义和初始化方法为:
专注于为中小企业提供网站设计制作、成都做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业美兰免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了成百上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
Dim array As Integer(,) = {{1, 2, 3}, {4, 5, 6}}
每一行的元素数量是固定且相等的。
array(2)(2)是交错数组(即数组的数组)的访问方式。也就是,你有一个数组,这个数组的每个元素也是数组。其数组的定义和初始化方法为:
Dim array As Integer()() = {New Integer() {1, 2, 3}, New Integer() {4, 5, 6, 7, 8}}
由于每个元素是独立的数组,所以交错数组每一行的元素数量不固定,且可以不等。
动态数组一般开始不能直接写dim a as string。除非Variant。一般先定义类型 但是数组名后得加上括号。例如
DIM a() AS STRING
后面根据需要使用的时候,可以自己定义大小。但是必须注意一点。重新定义的时候,
Redim a(11) 的时候,就会将原来的数组元素清空了,没有保存。
Redim Preserve a(11) 就会将重新定义数组大小的同时,还将原来的数据保存了。
用一个带括号的变量名来定义一维数组和多维数组如dim a(5) as integer '定义了1个1维、6个元素数组dim a(5,5) as integer '定义了1个2维、36个元素的数组
下面的代码是含有错误跳转的,但是如果放在这一个函数里面不会影响你其他的代码。
感觉完全不用错误处理做不出来。【虽然有个IsError,但是无法像 IsError(UBound(mArray, i))这样使用它,不然我们就可以不用跳转了。】
【Excel中的VBA与VB语法上没有什么差别】
设计思想:
在VB中数姐最大维数是60,所以我们通过错误捕捉来处理这个问题,在这里我们用到UBound函数
Public Function ArrayRange(mArray As Variant) As Integer
Dim i As Integer
Dim Ret As Integer
Dim ErrF As Boolean
ErrF = False
On Error GoTo ErrHandle
'判断代入的参数是否为数组
If Not IsArray(mArray) Then
ArrayRange = -1
Exit Function
End If
'VB中数组最大为60
For i = 1 To 60
'用UBound函数判断某一维的上界,如果大数组的实际维数时产生超出范围错误,
' 此时我们通过Resume Next 来捕捉错这个错误
Ret = UBound(mArray, i)
If ErrF Then Exit For
Next i
'最后返回
ArrayRange = Ret
Exit Function
ErrHandle:
Ret = i - 1
ErrF = True
Resume Next
End Function
每行的数字个数不同,你说的这是不规则数组,解决方案如下:
Dim b As String = ""
Dim a As Integer()() = New Integer(9)() {}
a(0) = New Integer() {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
a(1) = New Integer() {0, 3, 4, 5}
a(2) = New Integer() {0, 4, 5, 6, 7}
a(3) = New Integer() {0, 6, 5, 8, 9, 1}
a(4) = New Integer() {0, 2, 5, 1, 7}
a(5) = New Integer() {0, 4, 2, 6, 7, 3}
a(6) = New Integer() {0, 4, 5, 3, 2}
a(7) = New Integer() {0, 4, 1, 6, 2, 8, 5, 3}
a(8) = New Integer() {0, 4, 9, 6, 3, 5, 7}
a(9) = New Integer() {0, 1, 5, 9, 7, 6, 2, 4, 3, 8}
For i As Integer = 0 To a.GetUpperBound(0)
b = "第" i + 1 "行有" a(i).GetUpperBound(0) + 1 "个数" vbCrLf
Next
MessageBox.Show(b)
一维数组就是一行人,人的位置用站在第几个来形容。
二维就是排成几行几列的人,人的位置第几行第几个来形容。
三维就是几行几列的人摞了好几层,某人的位置用第几层第几行第几个来形容。
以此类推。
比如
四维数组就是好几天里每天来一群人排成三维数组,某人的位置就是第几天来的第几层的第几行的第几个人。
数学里学过的