2011-08-23 5 views
0

J'ai une petite question sur un VBA Excel. Dans le script suivant, j'obtiens une erreur 1004 à la ligne: ActiveSheet.Cells (ligne, 0) .Text = éléments (i) et probablement les lignes suivantes également. Toute aide serait grandement appréciée!Excel VBA Problème 1004

Sub Mogelijkheden() 
Workbooks("Model-v6-final-test_macro_2.xlsm").Sheets("Variaties").Activate 
ActiveSheet.Activate 

Dim elements(3) As Variant 
elements(0) = ActiveSheet.Cells(3, 2).Text 
elements(1) = ActiveSheet.Cells(4, 2).Text 
elements(2) = ActiveSheet.Cells(5, 2).Text 

Dim length As Integer 
length = UBound(elements) - LBound(elements) + 1 

Dim i As Integer 
Dim j As Integer 
Dim k As Integer 
Dim x As Integer 
Dim y As Integer 
Dim z As Integer 
Dim c As Integer 
Dim b As Integer 
Dim v As Integer 
Dim n As Integer 

Dim row As Integer 
row = 10 

'Now, "print" the combinations by looping through your array 
For i = 0 To length 
For j = 0 To length 
For k = 0 To length 
For x = 0 To length 
For y = 0 To length 
For z = 0 To length 
For c = 0 To length 
For b = 0 To length 
For v = 0 To length 
For n = 0 To length 

ActiveSheet.Cells(row, 0).Text = elements(i) 
ActiveSheet.Cells(row, 1).Text = elements(j) 
ActiveSheet.Cells(row, 2).Text = elements(k) 
ActiveSheet.Cells(row, 3).Text = elements(x) 
ActiveSheet.Cells(row, 4).Text = elements(y) 
ActiveSheet.Cells(row, 5).Text = elements(z) 
ActiveSheet.Cells(row, 6).Text = elements(c) 
ActiveSheet.Cells(row, 7).Text = elements(b) 
ActiveSheet.Cells(row, 8).Text = elements(v) 
ActiveSheet.Cells(row, 9).Text = elements(n) 

row = row + 1 

Next n 
Next v 
Next b 
Next c 
Next z 
Next y 
Next x 
Next k 
Next j 
Next i 

End Sub 
+1

Les cellules (ligne, 0) sont hors contexte. A1 = cellules (1,1). – JoshRoss

+1

Qu'essayez-vous exactement de faire? Le code que vous avez posté sera bouclé ~ 59 000 fois – Banjoe

+0

Je devais créer toutes les possibilités d'une série de 9 variables * 3 options, ce qui devrait générer 3^options, ou 19683 possibilités. Je vais télécharger le script final dans un commentaire ci-dessous pour montrer comment j'ai finalement réussi à le faire fonctionner. – Milan

Répondre

2

modifier l'affectation de longueur:

length = ubound(elements) - 1

, vous voulez aussi:

ActiveSheet.cells(row, 1).value = elements(i)

Vous ne pouvez pas écrire à la propriété Text

+0

Merci pour votre réponse, avec ceci j'ai réussi à faire fonctionner le script. J'ai aussi fait d'autres modifications pour correspondre au but (générer 3^9èmes possibilités) du script, mais en changeant ces lignes, le script s'est parfaitement déroulé. – Milan

1
ActiveSheet.Cells(row, 0).Text = elements(i) 

Il n'y a pas de colonne 0 dans Excel. Vous devrez commencer par la colonne 1 et aller à 10.

.Text est également une propriété en lecture seule d'un objet plage. Utilisez .Formula à la place. Une fois que vous aurez corrigé ces erreurs, vous constaterez que vos boucles vont trop haut (votre Length = 4, mais ce devrait être =3, et votre boucle devrait aller de 0 à 2).

EDIT: Même après avoir résolu ces problèmes, vous aurez plus de problèmes. Je ne vais pas tous les donner, mais il suffit de dire que 3^10 = 59 049, ce qui pourrait créer des problèmes avec les plus petits types de données numériques.

Questions connexes