2

我想参考二维数组中的一个元素,如下所示:

    dim ary(5,5) as String 
    ary(1) = "Michael, Thomas, Bill, Mike, Pascal"
    ary(2) = "Iphone,HTCOne,SGS4,SGS3"
    '... and so on

我可以这样写吗:?

    For i = 0 To UBound(ary)
            activMan = ary(i)
            Sheets("Example").Cells(1,1) = activMan(i)
            'activMan is now Michael
            ' so i dont have to use two variables...
        End If
    Next i
    ' in the next round activMan is going to be HTCOne

现在 activMan 应该是第一个维度中 ary(i) 的引用,并且我可以访问第二个维度中的所有元素。

这是可能的还是完全错误的?

编辑:

我会给出:

1.: Mike -> arr(0,0)
2.: Ipod -> arr(1,1)
3.: .... -> arr(2,2)

但我意识到只有一个变量是可能的......^^

4

1 回答 1

2

那是完全错误的:p

分析这个芽:)

Option Explicit

Sub build2DArray()
    ' 2D 5 element array
    ' elements  1st  2nd   3rd   4th   5th
    ' index 0 [0, 0][1, 0][2, 0][3, 0][4, 0]
    ' index 1 [0, 1][1, 1][2, 1][3, 1][4, 1]

    Dim arr(0 To 5, 0 To 1) as String  ' same as Dim arr(5, 1) 

    arr(0, 0) = "Mike"
    arr(1, 0) = "Tom"
    arr(2, 0) = "Bill"
    arr(3, 0) = "Michael"
    arr(4, 0) = "Pascal"

    arr(0, 1) = "IPhone"
    arr(1, 1) = "Ipod"
    arr(2, 1) = "Mac"
    arr(3, 1) = "ITunes"
    arr(4, 1) = "IArray"

    Dim i As Long, j As Long

    Dim activeMan As String
    For i = LBound(arr) To UBound(arr) - 1
        activeMan = arr(i, 0)
        Debug.Print "loop no. " & i & " activeMan: " & activeMan
        Cells(i + 1, 1).Value = activeMan
        Cells(i + 1, 2).Value = arr(i, 1)
    Next i

End Sub

编辑:可以使用类型和自定义函数来实现相同的结果,看看

Private Type yourType
tName As String
tPhone As String
End Type

Sub example()
    Dim yType(3) As yourType
    yType(0).tName = "Michael"
    yType(0).tPhone = "iPhone"
    yType(1).tName = "Tom"
    yType(1).tPhone = "Blackberry"
    yType(2).tName = "Dave"
    yType(2).tPhone = "Samsung"

    Dim i&
    For i = LBound(yType) To UBound(yType)
        Debug.Print get_yType(yType, i)
    Next i

End Sub

Private Function get_yType(arr() As yourType, i&) As String
    get_yType = arr(i).tName & " " & arr(i).tPhone
End Function
于 2013-06-13T10:09:15.150 回答