2016-11-23 1 views
0

Je fais une boucle et avoir besoin d'utiliser un type de tableau Variant, mais j'obtiens l'erreur 13 (incompatibilité de type). Je veux que k soit 3, 4 et 5 pour la 1ère valeur, et ainsi de suite (selon l'inspection variable ci-dessous). Je ne sais pas comment faire pour lire le tableau. J'ai essayé d'utiliser tsperiodo(i)(j) mais cela n'a pas fonctionné non plus.l'aide d'un tableau Variant dans une boucle (erreur 13 incompatibilité de type)

Voici le tableau des variantes:

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 

et voici où je veux l'utiliser:

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)

+0

quelle version d'Excel utilisez-vous? Français ? qu'est-ce que 'Pour i = 1 To ocup (numDis, 1)' suppost être? –

+0

J'utilise excel 2016 en portugais! « OCUP » c'est un tableau de Variat aussi, mais qui fonctionne correctement, je vais modifier le message principal pour l'insérer dans le code. – jf8769

+0

Vous montrez jamais comment 'tsInicio (i)' et 'tsFim (i)' sont instanciés. 'Evaluate (" = ROW ("& tsInicio (i) &": "& tsFim (i) &") ")' retournera simplement un nombre et non un tableau. –

Répondre

1

Sans comprendre en profondeur ce que vous essayez d'atteindre, évidemment chaque élément de tsPeriodo est une variante/tableau lui-même, alors on finit avec une sorte d'un tableau 2D (non standard). Pour attraper tous les éléments à l'intérieur de votre boucle, vous pouvez essayer ceci:

Dim k, l 
For Each k In tsPeriodo 
    For Each l In k 
     ' doSomething, i.e. 
     variable = "x_" & i & "_" & j & "_" & l 

    Next 
Next 
+0

Ça a marché, merci! Existe-t-il un autre moyen de récupérer les variables d'un tableau de type variant ou c'est le seul? – jf8769

+0

Habituellement, vous pouvez également l'indexer de la manière habituelle, mais vous devez connaître le nombre de dimensions, la taille de chaque élément, etc. Avec 'For Each' vous avez besoin de moins de connaissances préalables. –