您可以向我解释为什么以下代码有效吗?
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)
我们才能逃脱?
提前谢谢。
答案 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