Excel VBA l'incrémentation de la variable pour la boucle

Je suis encore un nouvel apprenant de la programmation VBA, et j'ai rencontré un problème que je n'arrive pas à trouver une solution. Je suis en train de créer un classeur pour gérer les recettes. Je demande un formulaire d'utilisateur utilisé pour ajouter une recette dans une macro avec plusieurs zone de texte intrants (~96 d'entre eux). Quand j'ai d'entrée de tous les ingrédients, la quantité, les unités et appuyez sur le bouton OK, je veux écrire ce qui est dans le formulaire utilisateur dans la feuille de calcul. Toutes les zones de texte sont nommés se terminant par un numéro dans l'ordre croissant (par exemple .txtIngredient1, .txtIngredient2, ...). Est-il possible d'utiliser une boucle for pour copier le Moi.txtIngredientX.Valeur sur une plage de la feuille?

Un extrait de mon code actuel:

Sheets("Recipes").Range("B" & addatrow + 0) = Me.txtIngredient1.Value
Sheets("Recipes").Range("B" & addatrow + 1) = Me.txtIngredient2.Value
Sheets("Recipes").Range("B" & addatrow + 2) = Me.txtIngredient3.Value
Sheets("Recipes").Range("B" & addatrow + 3) = Me.txtIngredient4.Value
Sheets("Recipes").Range("B" & addatrow + 4) = Me.txtIngredient5.Value
Sheets("Recipes").Range("B" & addatrow + 5) = Me.txtIngredient6.Value
Sheets("Recipes").Range("B" & addatrow + 6) = Me.txtIngredient7.Value
Sheets("Recipes").Range("B" & addatrow + 7) = Me.txtIngredient8.Value
Sheets("Recipes").Range("B" & addatrow + 8) = Me.txtIngredient9.Value
Sheets("Recipes").Range("B" & addatrow + 9) = Me.txtIngredient10.Value
Sheets("Recipes").Range("B" & addatrow + 10) = Me.txtIngredient11.Value
Sheets("Recipes").Range("B" & addatrow + 11) = Me.txtIngredient12.Value
Sheets("Recipes").Range("B" & addatrow + 12) = Me.txtIngredient13.Value

J'ai essayé la seule chose que je sais faire ce qui est quelque chose comme ceci:

for i = 1 to 32
    Sheets("Recipes").Range("B" & addatrow - 1 + i) = me.txtIngredient & i.value

qui ne fonctionne pas. Remarque: addatrow est une variable de la macro qui dicte où la prochaine recette doit être inséré.

Toute aide est grandement appréciée!

Merci!

  • je me demandais si range("B" & addatrow - 1 + i), ne devrait pas être range("B" & (addatrow - 1 + i)) ?? Vous pouvez également utiliser Cells (addatrow - 1 + i,2)
InformationsquelleAutor Brian Mixon | 2014-11-06