在循环中使用变体数组(错误 13 类型不匹配)
Using a Variant Array in a loop (error 13 type mismatch)
我正在执行 for 循环并需要使用变体数组类型,但我收到错误 13(类型不匹配)。我希望第一个值的 k 为 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
variable inspection for the tsperiodo(i)
如果不深入了解您要实现的目标,显然 tsPeriodo 的每个元素都是 variant/array 本身,因此您最终会得到某种(非标准)二维数组。要在你的循环中捕获其中的所有元素,你可以试试这个:
Dim k, l
For Each k In tsPeriodo
For Each l In k
' doSomething, i.e.
variable = "x_" & i & "_" & j & "_" & l
Next
Next
我正在执行 for 循环并需要使用变体数组类型,但我收到错误 13(类型不匹配)。我希望第一个值的 k 为 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
variable inspection for the tsperiodo(i)
如果不深入了解您要实现的目标,显然 tsPeriodo 的每个元素都是 variant/array 本身,因此您最终会得到某种(非标准)二维数组。要在你的循环中捕获其中的所有元素,你可以试试这个:
Dim k, l
For Each k In tsPeriodo
For Each l In k
' doSomething, i.e.
variable = "x_" & i & "_" & j & "_" & l
Next
Next