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 êtrerange("B" & (addatrow - 1 + i))
?? Vous pouvez également utiliserCells (addatrow - 1 + i,2)
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Noter que
nameForm
doit être le nom de votre formulaire, AvecMe
semble ne pas fonctionner.call Mysub(arg1,arg2,Me)
, et puis dans le module :sub Mysub (byval arg1 as Long, byval arg2 as String, byref Form as UserForm)
. Remarque leByref
est là pour enregistrer les modifications apportées à l'objet UserForm.ce code doit être relié sur le bouton Ok à l'intérieur de l'objet UserForm code de la page :
Comment sur:
Bonne question, j'ai souvent envie de faire ce genre de chose moi-même 🙂
(C'est VB.NET code, ne savent pas comment beaucoup de qui va travailler en VBA, j'espère que ça fonctionne)