Excel-VBA-Inkrementierung der variable in for-Schleife
Bin ich mir noch einen neuen Lernenden der VBA-Programmierung, und ich bin gekommen, über ein Problem, dass ich kann nicht scheinen, um eine Lösung zu finden. Ich versuche eine Arbeitsmappe zu verarbeiten-Rezepte. Ich rufe ein Formular Benutzer hinzufügen, ein Rezept in ein makro mit mehreren text-box Eingänge (~96). Wenn ich geben Sie alle Zutaten, Menge, Einheiten und drücken Sie die Taste OK, ich will es zu schreiben, was in der user form in das Arbeitsblatt. Alle Textfelder benannt sind, enden mit einer Zahl in aufsteigender Reihenfolge (zB .txtIngredient1, .txtIngredient2, ...). Ist es möglich, eine for-Schleife verwenden, kopieren Sie die Mich.txtIngredientX.Wert auf einen Bereich in einem Blatt?
Einen Ausschnitt aus meinem derzeitigen code:
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
Habe ich versucht, das einzige, was ich weiß, zu tun, das ist so etwas wie dieses:
for i = 1 to 32
Sheets("Recipes").Range("B" & addatrow - 1 + i) = me.txtIngredient & i.value
welches nicht funktioniert. Hinweis: addatrow ist eine variable in dem makro, die bestimmt, wo das nächste Rezept eingefügt werden soll.
Jede Hilfe wird sehr geschätzt!
Dank!
range("B" & addatrow - 1 + i)
sein, nicht wahr range("B" & (addatrow - 1 + i))
?? Auch Sie könnte verwenden Cells (addatrow - 1 + i,2)
InformationsquelleAutor Brian Mixon | 2014-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Beachten Sie, dass
nameForm
muss der name des Formulars, MitMe
scheint nicht zu funktionieren.funktioniert so lange, wie du im userform-code-Seite ; für alle module, sub-code, den Sie brauchen, um entweder die globalen Namen des Formulars ein, oder übergeben Sie (von der Form auf einem Modul) in ein argument an die sub wie diesem :
call Mysub(arg1,arg2,Me)
, und dann in das Modul :sub Mysub (byval arg1 as Long, byval arg2 as String, byref Form as UserForm)
. Hinweis: dieByref
ist es, änderungen zu speichern, auf die UserForm.InformationsquelleAutor SkyMaster
dieser code muss mit der Ok-Taste innerhalb der UserForm-code-Seite :
InformationsquelleAutor Patrick Lepelletier
Wie etwa:
Gute Frage, ich habe oft wollte, das zu tun diese Art der Sache mich 🙂
(Das ist VB.NET code, weiß nicht, wie viel von dieser Arbeit wird in VBA, hoffe, es funktioniert)
nächsten, keine von Ihnen Arbeit in VBA. VBA != Vb.Net
InformationsquelleAutor Robin Hartland