在循环中使用变体数组(错误 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