我正在进行for循环并且需要使用Variant Array类型,但我得到错误13(类型不匹配)。我希望k为第1个值为3,4和5,依此类推(根据下面的变量检查)。我只是不知道如何让vba读取数组。我尝试使用tsperiodo(i)(j)
,但它也没有用过。
这是变体数组:
ReDim ocup(1 To numDis, 1 To numSalas) As Variant
For i = 1 To numDis
For j = 1 To numSalas
If capacidadeSalas(j) - alunos(i) >= 0 Then
ocup(i, j) = 1
End If
Next
Next
ReDim tsPeriodo(1 To numDis) As Variant
For i = 1 To numDis
tsPeriodo(i) = Application.Transpose(Evaluate("=ROW(" & tsInicio(i) & ":" & tsFim(i) & ")"))
Next
这是我想要使用的地方:
For i = 1 To ocup(numDis, 1)
For j = 1 To ocup(1, numSalas)
For k = 1 To tsPeriodo(i) 'this is where im getting error 13
variable = "x_" & i & "_" & j & "_" & k
Next
Next
Next
答案 0 :(得分:1)
如果不深入了解您要实现的目标,显然tsPeriodo的每个元素都是变体/数组本身,因此最终会得到某种(非标准)2D数组。要在循环中捕获其中的所有元素,您可以尝试:
Dim k, l
For Each k In tsPeriodo
For Each l In k
' doSomething, i.e.
variable = "x_" & i & "_" & j & "_" & l
Next
Next