我希望创建一个具有5行2列的VBA阵列
varData = [{0, 0; 0, 0; 0, 0; 0, 0; 0, 0}]
并根据情况更改值
select Case sth
Case "1"
varData(0, 0) = varData(0, 0) + Cells(I, 1).Value
Case "2"
varData(0, 1) = varData(0, 1) + Cells(I, 1).Value
Case "3"
varData(0, 2) = varData(0, 2) + Cells(I, 1).Value
Case "4"
varData(0, 3) = varData(0, 3) + Cells(I, 1).Value
Case "5"
varData(0, 4) = varData(0, 4) + Cells(I, 1).Value
Case Else
'?
End Select
我在此行出现错误:
varData(0, 2) = varData(0, 2) + Cells(I, 1).Value
说“下标超出范围”
我还尝试将数组更改为
varData = [{0, 0, 0, 0, 0; 0, 0, 0, 0, 0}]
请帮助我了解我如何超出范围
答案 0 :(得分:3)
您使用的是Evaluate的简写,因此您通过与工作表相同的机制加载数组,因此基数为1而不是0。
因此,您想这样更改引用:
select Case sth
Case "1"
varData(1, 1) = varData(0, 0) + Cells(I, 1).Value
Case "2"
varData(1, 2) = varData(0, 1) + Cells(I, 1).Value
Case "3"
varData(1, 3) = varData(0, 2) + Cells(I, 1).Value
Case "4"
varData(1, 4) = varData(0, 3) + Cells(I, 1).Value
Case "5"
varData(1, 5) = varData(0, 4) + Cells(I, 1).Value
Case Else
'?
End Select