将数组分配给变量。 VBA代码不清楚

时间:2016-08-04 08:59:55

标签: arrays vba

您可以向我解释为什么以下代码有效吗?

Sub MyTest()
Dim arrL1(3) As Variant
Dim arrTemp(10) As Variant
Dim i As Long, j As Long, s As String
Dim varTemp As Variant

For i = LBound(arrL1) To UBound(arrL1)
    For j = LBound(arrTemp) To UBound(arrTemp)
        arrTemp(j) = i + j
    Next

    **arrL1(i) = arrTemp**
Next
' 2nd part of the code

**For i = LBound(arrL1) To UBound(arrL1)**
    varTemp = arrL1(i)
    s = "" 
    For j = LBound(varTemp) To UBound(varTemp)      
        s = s & Format(varTemp(j), "@@@")
    Next
    Debug.Print s 
Next

End Sub

令我困惑的是第一个“已加星标”的行arrL1(i) = arrTemp。当我尝试在我的项目中以这种方式分配数组时,我得到Object or Application defined error

另一个令人困惑的线在第二部分,即varTemp = arrL1(i)。我们真的需要另一个变量varTemp吗?只有arrL1(i)我们才能逃脱?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

关于你的第一个问题,你是否定义了Dim arrL1(3) As Variant,你是否像在循环中那样设置它?

关于第二个问题,没有必要varTemp = arrL1(i)  ,你的代码将在没有它的情况下工作(就像在下面的代码中一样)。

For i = LBound(arrL1) To UBound(arrL1)
    s = ""
    For j = LBound(arrL1(i)) To UBound(arrL1(i))
        s = s & Format(arrL1(i)(j), "@@@")
    Next

    Debug.Print s
Next