在循环中使用变量数组(错误13类型不匹配)

时间:2016-11-23 06:35:56

标签: arrays excel vba excel-vba ms-office

我正在进行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

variable inspection for the tsperiodo(i)

1 个答案:

答案 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