Hallo Timmsen,
ich habe deinen Code mal angesehen. Wenn ich ihn recht verstehe, willst du Werte aus TextBoxen der UserForm und aus Sheets(1) nach Sheets(2) in die Spalten A bis E der nächsten freien Zeile schreiben.
Mit den ersten Befehlen sollen wohl Überschriften in Sheets(1) erzeugt werden. Diese schreibst du in die Zeile 4, die du weiter unten mit den zu übertragenen Werten überschreibst. Das ist wohl nicht so gewollt, oder?
Empfehlung: Schreibe die Überschriften nur einmal ins Sheets(2), ggf. manuell. Nehmen wir an, du schreibst diese in die Spalten A bis E der Zeile 2 und es sind noch keine Werte übertragen. Dann ist die letzte beschriebene Zelle in Spalte A A2.
a = Range("A65336").End(xlUp).Row
setzt dann die Variable a auf 2. Die nächste freie Zeile (deine Variable Zeile) ist dann a+1, also
Zeile= Range("A65336").End(xlUp).Row+1.
Jetzt verwendest du ein Do-Loop-Schleife ohne Abbruchkriterium. Sieh einmal in die VBA-Hilfe hierzu. Solche Kriterien werden mit Until oder While hinter dem Loop oder dem Do eingefügt, je nach dem ob die Schleife wenigstens einmal durchlaufen werden soll oder bei Erfüllung des Kriteriums sofort abgebrochen werden soll. Ich gehe aber davon aus, dass du diese Schleife gar nicht brauchst.
Mit dem UserForm1.Show wechselt VBA zur UserForm1 und bleibt dort, bis diese entweder durch ein Terminate-Ereignis (Klicken auf das Abbruch-Kreuz) oder durch einen Befehl Unload UserForm1 beendet wird. Die Befehle
ThisWorkbook.Sheets(2).Cells(Zeile, 1) = UserForm1.TextBox1.Text
ThisWorkbook.Sheets(2).Cells(Zeile, 2) = UserForm1.TextBox2.Text
ThisWorkbook.Sheets(2).Cells(Zeile, 3) = UserForm1.TextBox3.Text
ThisWorkbook.Sheets(2).Cells(Zeile, 4) = ThisWorkbook.Sheets(1).Cells(6, 3)
ThisWorkbook.Sheets(2).Cells(Zeile, 5) = ThisWorkbook.Sheets(1).Cells(8, 3)
ThisWorkbook.Sheets(1).Cells(6, 3) = ""
ThisWorkbook.Sheets(1).Cells(8, 3) = ""
sollest du also in den Codeteil der UserForm schreiben. Wie man eine UserForm anlegt, wie man Steuerelemente einfügt und wie man Code hierfür schreibt, habe in der Antwort an Tina (Makro spinnt v. 03.03.08, 09:46) v. 03.03.08, 17:40 dargestellt. Du brauchst wohl mindestens 3 TextBoxen und zwei Befehlsschaltflächen für OK und Abbrechen.
Also:
1. Im Modul (z.B. NewMacros) brauchst du
Sub daten()
Load UserForm1 ’wenn deine UserForm so heißt
UserForm1.show
end sub
2. Im Codeteil der UserForm
private sub commandbutton1_click ’wenn dieser der OK-Button ist
ThisWorkbook.Sheets(2).activate
Zeile= Range("A65336").End(xlUp).Row+1.
Cells(Zeile, 1) = UserForm1.TextBox1.Text
Cells(Zeile, 2) = UserForm1.TextBox2.Text
Cells(Zeile, 3) = UserForm1.TextBox3.Text
Cells(Zeile, 4) = ThisWorkbook.Sheets(1).Cells(6, 3)
Cells(Zeile, 5) = ThisWorkbook.Sheets(1).Cells(8, 3)
Cells(6, 3) = ""
Cells(8, 3) = ""
Unload UserForm1
end sub
private sub commandbutton2_click ’wenn dieser der Abbrechen-Button ist
Unload UserForm1
end sub
Jetzt könntest du noch Befehle zum automatischen Speichern etc. einfügen.
Gruß
Holger
|