Werte aus UserForm werden immer in gleicher Zeile geschrieben, warum?

Ich habe unten eingefügten Code für meine UserForm erstellt. Nun werden die Daten auch in die Tabelle eingetragen, aber jedes mal wenn ich die UserForm neu starte nd neue Werte eintrage werden die Daten in die gleiche Zeile geschrieben und somit die anderen gelöscht. Was ist an meinem Code falsch?

Private Sub cmdUebernahmeEingabedaten_Click()
Dim sp As Integer
Dim z As Long
z = Range(„A65536“).End(xlUp).Row + 1
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 1) = EG_Raumname
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 2) = EG_LfdNrFuerLeuchte
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 3) = EG_Startjahr
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 4) = EG_LeuchtenAnzahlAlt
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 5) = EG_AnzahlLMAlt
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 6) = EG_BezeichnungLMAlt
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 7) = EG_LebensdauerLMAlt
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 8) = EG_WattLMAlt
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 9) = EG_VGAlt
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 10) = EG_AnzahlVGAlt
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 11) = EG_AnzahlStarterAlt
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 12) = EG_BetriebsstundenTag
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 13) = EG_BetriebstageJahr
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 14) = EG_KostenLeuchtenNeu
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 15) = EG_KostenEEFVGAlt
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 16) = EG_KostenStarterAlt
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 17) = EG_ZeitLMAlt
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 18) = EG_ZeitVGAltNeu
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 19) = EG_KostenHMAlt
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 20) = EG_LeuchtenAnzahlNeu
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 21) = EG_AnzahlLMNeu
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 22) = EG_BezeichnungLMNeu
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 23) = EG_LebensdauerLMNeu
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 24) = EG_WattLMNeu
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 25) = EG_VGNeu
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 26) = EG_AnzahlVGNeu
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 27) = EG_AnzahlStarterNeu
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 28) = EG_KostenLeuchtenNeu
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 29) = EG_KostenEEFVGNeu
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 30) = EG_KostenLMNeu
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 31) = EG_KostenStarterNeu
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 32) = EG_ZeitAltNeuNeu
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 33) = EG_ZeitLMNeu
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 34) = EG_KostenHMNeu
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 35) = EG_KostenTechniker
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 36) = EG_CO2
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 37) = EG_KostenkWh
End Sub

Hallo olerostock,

ich habe leider grad kein excel da um es auszuprobieren, aber versuche bei der Zellabfrage entweder „-1“ statt „+1“ oder „xldown“ anstelle von „xlup“.
Ich bin mir zwar nicht sicher, müsste aber klappen…

Viel Erfolg
Jonas

Hallo olerostock,

Zwei Dinge sind m. E. falsch:

a) Neu starten => Alle Variablen (insbes. z) werden neu initialisiert und bleiben daher immer gleich

b) z = Range-Objekt => Du verwendest z aber nur als Zeilen-Nummer

Also: z muss dynamisch gesetzt werden:
Dim z as integer
while Tabelle.Cells(z, Spalte) „“
z = z + 1
Wend

Schleife über Tabellenspalte
prüfen ob leer
wenn ja: diese Zeile als z merken

Dann sollte es klappen.

Gruß
Harry

Hallo Harry,

ich habe den Code wie folgt geändert.
Private Sub cmdUebernahmeEingabedaten_Click()
Dim sp As Integer
Dim z As Integer
While Tabelle10.Cells(z, Spalte) „“
z = z + 1
Wend
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „A“).End(xlUp).Row + 1, „A“).Value = EG_Raumname
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „B“).End(xlUp).Row + 1, „B“).Value = EG_LfdNrFuerLeuchte
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „C“).End(xlUp).Row + 1, „C“).Value = EG_Startjahr
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „D“).End(xlUp).Row + 1, „D“).Value = EG_LeuchtenAnzahlAlt
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „E“).End(xlUp).Row + 1, „E“).Value = EG_AnzahlLMAlt
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „F“).End(xlUp).Row + 1, „F“).Value = EG_BezeichnungLMAlt
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „G“).End(xlUp).Row + 1, „G“).Value = EG_LebensdauerLMAlt
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „H“).End(xlUp).Row + 1, „H“).Value = EG_WattLMAlt
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „I“).End(xlUp).Row + 1, „I“).Value = EG_VGAlt
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „J“).End(xlUp).Row + 1, „J“).Value = EG_AnzahlVGAlt
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „K“).End(xlUp).Row + 1, „K“).Value = EG_AnzahlStarterAlt
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „L“).End(xlUp).Row + 1, „L“).Value = EG_BetriebsstundenTag
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „M“).End(xlUp).Row + 1, „M“).Value = EG_BetriebstageJahr
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „N“).End(xlUp).Row + 1, „N“).Value = EG_KostenLeuchtenNeu
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „O“).End(xlUp).Row + 1, „O“).Value = EG_KostenEEFVGAlt
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „P“).End(xlUp).Row + 1, „P“).Value = EG_KostenStarterAlt
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „Q“).End(xlUp).Row + 1, „Q“).Value = EG_ZeitLMAlt
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „R“).End(xlUp).Row + 1, „R“).Value = EG_ZeitVGAltNeu
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „S“).End(xlUp).Row + 1, „S“).Value = EG_KostenHMAlt
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „T“).End(xlUp).Row + 1, „T“).Value = EG_LeuchtenAnzahlNeu
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „U“).End(xlUp).Row + 1, „U“).Value = EG_AnzahlLMNeu
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „V“).End(xlUp).Row + 1, „V“).Value = EG_BezeichnungLMNeu
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „W“).End(xlUp).Row + 1, „W“).Value = EG_LebensdauerLMNeu
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „X“).End(xlUp).Row + 1, „X“).Value = EG_WattLMNeu
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „Y“).End(xlUp).Row + 1, „Y“).Value = EG_VGNeu
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „Z“).End(xlUp).Row + 1, „Z“).Value = EG_AnzahlVGNeu
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „AA“).End(xlUp).Row + 1, „AA“).Value = EG_AnzahlStarterNeu
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „AB“).End(xlUp).Row + 1, „AB“).Value = EG_KostenLeuchtenNeu
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „AC“).End(xlUp).Row + 1, „AC“).Value = EG_KostenEEFVGNeu
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „AD“).End(xlUp).Row + 1, „AD“).Value = EG_KostenLMNeu
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „AE“).End(xlUp).Row + 1, „AE“).Value = EG_KostenStarterNeu
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „AF“).End(xlUp).Row + 1, „AF“).Value = EG_ZeitAltNeuNeu
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „AG“).End(xlUp).Row + 1, „AG“).Value = EG_ZeitLMNeu
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „AH“).End(xlUp).Row + 1, „AH“).Value = EG_KostenHMNeu
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „AI“).End(xlUp).Row + 1, „AI“).Value = EG_KostenTechniker
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „AJ“).End(xlUp).Row + 1, „AJ“).Value = EG_CO2
Worksheets(„ZusammenfassungBeleuchtung“).Cells(Cells(Rows.Count, „AK“).End(xlUp).Row + 1, „AK“).Value = EG_KostenkWh
End Sub
ich bekomme aber immer die Meldung, Laufzeizfehler 424 und Objekt erforderlich ist.

Hallo Jonas,
danke für die schnelle Meldung.
Ich habe das jetzt mit folgendem Code geklärt.
Private Sub cmdUebernahmeEingabedaten_Click()
Dim lngIndex As Long
With Tabelle10
With .Cells(.Rows.Count, 1).End(xlUp).Offset(1)
.Value = EG_Raumname.Text
.Offset(, 1).Value = EG_LfdNrFuerLeuchte.Text
.Offset(, 2).Value = EG_Startjahr.Text
.Offset(, 3).Value = EG_LeuchtenAnzahlAlt.Text
.Offset(, 4).Value = EG_AnzahlLMAlt.Text
.Offset(, 5).Value = EG_BezeichnungLMAlt.Text
.Offset(, 6).Value = EG_LebensdauerLMAlt.Text
.Offset(, 7).Value = EG_WattLMAlt.Text
.Offset(, 8).Value = EG_VGAlt.Text
.Offset(, 9).Value = EG_AnzahlVGAlt.Text
.Offset(, 10).Value = EG_AnzahlStarterAlt.Text
.Offset(, 11).Value = EG_BetriebsstundenTag.Text
.Offset(, 12).Value = EG_BetriebstageJahr.Text
.Offset(, 13).Value = EG_KostenLeuchtenNeu.Text
.Offset(, 14).Value = EG_KostenEEFVGAlt.Text
.Offset(, 15).Value = EG_KostenStarterAlt.Text
.Offset(, 16).Value = EG_ZeitLMAlt.Text
.Offset(, 17).Value = EG_ZeitVGAltNeu.Text
.Offset(, 18).Value = EG_KostenHMAlt.Text
.Offset(, 19).Value = EG_LeuchtenAnzahlNeu.Text
.Offset(, 20).Value = EG_AnzahlLMNeu.Text
.Offset(, 21).Value = EG_BezeichnungLMNeu.Text
.Offset(, 22).Value = EG_LebensdauerLMNeu.Text
.Offset(, 23).Value = EG_WattLMNeu.Text
.Offset(, 24).Value = EG_VGNeu.Text
.Offset(, 25).Value = EG_AnzahlVGNeu.Text
.Offset(, 26).Value = EG_AnzahlStarterNeu.Text
.Offset(, 27).Value = EG_KostenLeuchtenNeu.Text
.Offset(, 28).Value = EG_KostenEEFVGNeu.Text
.Offset(, 29).Value = EG_KostenLMNeu.Text
.Offset(, 30).Value = EG_KostenStarterNeu.Text
.Offset(, 31).Value = EG_ZeitAltNeuNeu.Text
.Offset(, 32).Value = EG_ZeitLMNeu.Text
.Offset(, 33).Value = EG_KostenHMNeu.Text
.Offset(, 34).Value = EG_KostenTechniker.Text
.Offset(, 35).Value = EG_CO2.Text
.Offset(, 36).Value = EG_KostenkWh.Text
End With
End With
End Sub

Dein Code liest die letzte Zeile irgendeiner (aktiven) Tabelle und nicht die im benutzten Blatt

es muss heißen:

z = Worksheets("Zusammenfassung\_Beleuchtung").Range("A65536").End(xlUp).Row + 1

Da ist ja was abgeschnitten worden:

z = Worksheets("Zusammenfassung\_Beleuchtung").Range("A65536").End(xlUp).Row + 1

Langsam zweifle ich an meinem Verstand:

Statt .ra muss es heißen:

.Range(„A65536“).End(xlUp).Row + 1

Hi,

das weiß ich auch nicht genau. Ich vermute aber, daß die Syntaxzur Ermittlung der ersten freien Zeile falsch ist. Mein Gefühl meint, daß da nicht eine einzelne Zelle, sondern ein Bereich hineinmüßte.
Oder Du mußt vielleicht am Ende des Eintragens die Tabelle speichern, damit der Befehl funktioniert.

HTH.

Markus

Hallo,
das was du vermutlich brauchst ist die Änderung in
z = Worksheets(„Zusammenfassung_Beleuchtung“).Range(„A65536“).End(xlUp).Row + 1

Sonst wird auf dem gerade aktiven Arbeitsblatt nachgeschaut, und das dürfte nicht das Zielblatt sein.

Kristallkugelschauen hoffentlich erledigt :smile:
viel Erfolg und herzliche Grüße
Katharina

Hallo Amtsschimmel,

danke für die Hilfe.

Ich habe das ganze nebenbei versucht mit folgendem Cod zu erledigen und es klappt auch. Deine Variante habe ich in einem anderen Tabellenblatt ausprobiert und funktioniert auch super.
Hier mein anderer Code:
Private Sub cmdUebernahmeEingabedaten_Click()
Dim lngIndex As Long
With Tabelle10
With .Cells(.Rows.Count, 1).End(xlUp).Offset(1)
.Value = EG_Raumname.Text
.Offset(, 1).Value = EG_LfdNrFuerLeuchte.Text
.Offset(, 2).Value = EG_Startjahr.Text
.Offset(, 3).Value = EG_LeuchtenAnzahlAlt.Text
.Offset(, 4).Value = EG_AnzahlLMAlt.Text
.Offset(, 5).Value = EG_BezeichnungLMAlt.Text
.Offset(, 6).Value = EG_LebensdauerLMAlt.Text
.Offset(, 7).Value = EG_WattLMAlt.Text
.Offset(, 8).Value = EG_VGAlt.Text
.Offset(, 9).Value = EG_AnzahlVGAlt.Text
.Offset(, 10).Value = EG_AnzahlStarterAlt.Text
.Offset(, 11).Value = EG_BetriebsstundenTag.Text
.Offset(, 12).Value = EG_BetriebstageJahr.Text
.Offset(, 13).Value = EG_KostenLMAlt.Text
.Offset(, 14).Value = EG_KostenEEFVGAlt.Text
.Offset(, 15).Value = EG_KostenStarterAlt.Text
.Offset(, 16).Value = EG_ZeitLMAlt.Text
.Offset(, 17).Value = EG_ZeitVGAltNeu.Text
.Offset(, 18).Value = EG_KostenHMAlt.Text
.Offset(, 19).Value = EG_LeuchtenAnzahlNeu.Text
.Offset(, 20).Value = EG_AnzahlLMNeu.Text
.Offset(, 21).Value = EG_BezeichnungLMNeu.Text
.Offset(, 22).Value = EG_LebensdauerLMNeu.Text
.Offset(, 23).Value = EG_WattLMNeu.Text
.Offset(, 24).Value = EG_VGNeu.Text
.Offset(, 25).Value = EG_AnzahlVGNeu.Text
.Offset(, 26).Value = EG_AnzahlStarterNeu.Text
.Offset(, 27).Value = EG_KostenLeuchtenNeu.Text
.Offset(, 28).Value = EG_KostenEEFVGNeu.Text
.Offset(, 29).Value = EG_KostenLMNeu.Text
.Offset(, 30).Value = EG_KostenStarterNeu.Text
.Offset(, 31).Value = EG_ZeitAltNeuNeu.Text
.Offset(, 32).Value = EG_ZeitLMNeu.Text
.Offset(, 33).Value = EG_KostenHMNeu.Text
.Offset(, 34).Value = EG_KostenTechniker.Text
.Offset(, 35).Value = EG_CO2.Text
.Offset(, 36).Value = EG_KostenkWh.Text
End With
End With
End Sub

Hallo Katharina,
danke für Deine Hilfe. Funktioniert super.
Ich habe nebenbei einen anderen Code ausprobiert und klappt auch. Meine Frage ist, wie kann ich den von mir bnutzten Code einkürzen?

Danke sagt noch mal
olerostock

Hallo Markus,

habe mit Hilfe von Amtsschimmel und Katharina alles hin bekommen. Dein Einwand zu dem Code war richtig.

Danke nochmals.
Gruß
olerostock

Hallo,
viel kürzen geht da nicht, so, wie du die Variablen benannt hast. Kürzen könntest du höchstens, wenn du den Variablen nummerierte Namen statt der sprechenden Namen gibst, also ein Array nlegst, dann hast du EG_Feld(1), EG_Feld(2), …
Dann wär’ die Lösung
Dim I As Long
z=…
For I = 1 to 37
Worksheets(„Zusammenfassung_Beleuchtung“).Cells(z, 1) = EG_Feld(I)
Next I

Allerdings spricht auch einiges für das Beibehalten sprechender Namen - ist je nach Anlassfall wartungsfreundlicher und verständlicher …

herzliche Grüße
Katharina

Hallo Katharina,

habe mir schon fast so etwas gedacht.
Danke für Deine Hilfe.

herzliche Grüße
olerostock

Hallo Katharina,

ich habe da noch mal eine Frage.
Ich möchte über einen CommandButton in der Userform diese schließen, die Exeldatei speichern und anschließend diese schließen lassen. Geht das über einen CommandButton? Ich habe zum speichern und schließen der Userform folgenden Code, komme mit dem schließen der Exelmappe aber nicht weiter.
Code:
Private Sub cmdBeenden_Click()
Unload Me
Dim Dateiname As String
Dateiname = Format(Date, „yyyy-mm-dd“)
Application.Dialogs (xlDialogSaveAs).Show „C:“ & Dateiname
End Sub

hast Du da einen Tip?
Danke schon mal im voraus.
Gruß
olerostock

Hallo olerostock,

Die Fehlermeldung besagt, dass ein Objekt nicht vorhanden ist.

Lösung1: Debuggen (F8) und die Zeile ermitteln

Lösung2: While Tabelle10.Cells(z, Spalte) „“ ist m. E. falsch:
a) existiert Tabelle10 ?
b) muss Cells(z, sp) heissen, da „Spalte“ nicht definiert ist
c) für z und sp müssen Anfangswerte gesetzt werden (sonst 0)
d) das Schleifenende (WEND) kommt NICHT vor den worksheets-Zeilen sondern DANACH

Gruß
Harry

Hallo Harry,

danke für Deine Nachricht.
Ich hatte den Fehler inzwischen korrigiert.

Nochmals Danke

Gruß
Ole