Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten von Userform in Tabelle einfügen nach Datum sortiert

Daten von Userform in Tabelle einfügen nach Datum sortiert
06.01.2020 15:47:03
Userform
Hallo zusammen,
ich habe erst vor kurzem angefangen, mich mit Excel VBA zu beschäftigen.
***************************************************************************************************************
Zu beginn schon mal meine Frage:
>>>Wie kann ich Daten von einer Userform in ein Tabellenblatt nach Datum sortiert einfügen lassen?
********************************************************************************************************************
Folgende Daten werden in Userform erfasst: Datum, Beschreibung, Betrag, Beleg-/Rechn.-Nr.
Diese sollen nach drücken des "Eingabe Buchen"-Button in das Tabellenblatt "Datentabelle" eingefügt werden. NACH DATUM SORTIERT
Vorab. Ich suche jetzt schon seit Wochen in allen Foren...… Habe einige Lösungsansätze gefunden. Leider bin ich bis jetzt nicht auf die Lösung gekommen und hoffe, dass mir jemand von euch Profis weiterhelfen kann. Hab mir auch viele Videos angesehen. Sogar auf Englischen Foren. Ich bekomme es nicht so hin, wie ich es haben will.
Ich bin gerade dabei, mir ein für mich individuelles Haushaltsbuch selber zu programmieren.
Hier werden sämtliche Einnahmen und Ausgaben erfasst von:
Ich
Frau
Kind1
Kind2
Auto1
Auto2
Haus
zusätzlich möchte ich auch sämtliche Zählerstände erfassen. (Strom, Wasser, PV.....)
IST-Situation
Ich habe mir diverse Userform erstellt für die Erfassung der oben genannten Einnahmen, Ausgaben, Zählerstände....
Die eingegebenen Daten werden aktuell autom. in eine Tabelle eingefügt.
Momentan wird die neue Eingabe über Userform durch drücken des "Eingabe Buchen"-Button in die erste leere Zeile der "Datentabelle" eingetragen. Das funktioniert wunderbar.
Aufbau der Tabelle: ("Datentabelle")
Spalte A: Datum
Spalte B: Beschreibung
Spalte C: Beleg-/ Rechn.-Nr.:
Egal ob Einnahmen, Ausgaben oder sonstiges. Die ersten 3 Spalten werden somit immer befüllt mit Datum, Beschreibung, Beleg-/Rechn.-Nr...…..
Die Spalte für Betrag ist individuell. Je nach dem, welche Einnahmen oder Ausgaben erfasst werden.
Vereinfacht gesagt: Für jede Ausgabenart, Einnahmenart, usw. gibt es eine eigene Spalte, wo der Betrag autom. eingefügt wird.
Im u.g. Beispiel für "Ausgaben Nahrung Ich" wird der Betrag in Spalte BL eingetragen. Ich bezeichne diese Spalte im VBA mit 64. d.h. die 64e Spalte
Inhalt/Aufbau der Userform:
# Eingabefeld für Datum,
# Beschreibung (d.h. z.B. Ausgaben für Nahrung...),
# Betrag und Beleg-/Rechn.-Nummer,
# "Eingabe Buchen"-Button
Die Daten werden in der Userform in folgende TextBoxen eingegeben:
Datum: TextBox2
Beschreibung: TextBox1
Beleg-/Rechn.-Nr.: TextBox3
Betrag: TextBox4
"Eingabe Buchen"-Button: CommandButton1
Mithilfe von Initialize lasse ich je nach Kostenart einen vordefinierten Text in die Eingabefelder der Userform schreiben.
siehe Beispiel für meine Ausgaben Nahrung:
"Ich Ausgaben Nahrung" wird nach dem Buchen autom. in "Datentabelle" übertragen
Datum wird immer das aktuelle Datum übertragen,
Natürlich kann ich so trotzdem in der Userform ein anderes Datum, eine andere Beschreibung eingeben
Hier der Code, mit dem ich einen vordefinierten Text je nach Kostenart in die TextBoxen der Userform schreiben lasse:
Über dem Code Fenster ist ausgewählt: *Userform *Initialize

Private Sub UserForm_Initialize()
'Einträge für die Schaltflächen
'Box Datum
UFAusIchNahrungEssenX.TextBox2.Value = Date
'Box Beschreibung
UFAusIchNahrungEssenX.TextBox1.Value = "Ich Ausgaben Nahrung"
'Belegnummer
UFAusIchNahrungEssenX.TextBox3.Value = "eingeben"
'Betrag
UFAusIchNahrungEssenX.TextBox4.Value = "0,00"
End Sub

------------------------------------------------------------------------------------------------------
Datenbereich: Der Datenbereich von dem Tabellenblatt "Datentabelle" ist dynamisch. Das habe ich hinterlegt.
---------------------------------------------------------------------------------------------------------------------
Anbei mein aktueller Code der Userform, mit dessen Hilfe die in der Userform erfassten Daten autom. in die erste leere Zeile des Tabellenblatts "Datentabelle" einfügt werden:
###################################################################################
Über dem Code Fenster ist ausgewählt: *CommandButton1 *Click
'Eingaben der Schaltflächen in die Datentabelle übernehmen
Dim last As Integer
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
'Datum
ActiveSheet.Cells(last, 1).Value = CDate(UFAusIchNahrungEssenX.TextBox2.Value)
''Beschreibung
ActiveSheet.Cells(last, 2).Value = UFAusIchNahrungEssenX.TextBox1.Text
''Betrag
ActiveSheet.Cells(last, 64).Value = CCur(UFAusIchNahrungEssenX.TextBox4.Value)
'Belegnummer
ActiveSheet.Cells(last, 3).Value = UFAusIchNahrungEssenX.TextBox3.Text
'Fenster Schließen
Unload UFAusIchNahrungEssenX
Unload UFAusIchNahrung
Unload UFAusgabenIch
Unload UserFormAusgaben
End Sub
#################################################################################
>>Wie ändere ich diesen Code ab, dass meine Userform Eingaben nach Datum sortiert in die Tabelle "Datentabelle" eingefügt werden.
Ich hoffe, dass irgendjemand dies liest und die Lösung hat.
Wäre Super
Danke
Gruß
Thomas

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ganz super wäre.....
06.01.2020 15:51:28
Werner
Hallo,
...du deine Datei hier hochladen würdest. Nachbauen wird das hier keiner.
Gruß Werner
AW: Ganz super wäre.....
06.01.2020 17:17:44
KTom
Hallo Werner,
Ich habe in dieser excel Datei in den ganzen userforms Namen und Daten hinterlegt. Wenn ich es hochladen würde, dann müsste ich erst die ganzen Namen/Daten aus den userforms entfernen.
Des sind bestimmt 200 Stück.
Die oben genannten Codes verwende ich bei allen userforms, bei denen man eine Einnahme, Ausgabe, Zählerstand... bucht.
Das Tabellenblatt „Datentabelle“ ist eine einfach aufgebaute Tabelle.
Spalte A Datum
Spalte B Beschreibung
Spalte C Beleg-Rechn Nr
Die restlichen 200 Spalten sind immer für den Betrag. Für jede Einnahme, Ausgabe.... eine Eigene Spalte für den Betrag bzw Zählerstand
Die userforms hat die Eingabefelder:
Datum
Beschreibung
Beleg-Rechn.-Nr
Betrag
Buchen Button: nach dem klicken werden die userform eingaben in die „Datentabelle“ übertragen.
Aber leider in die erste leere Zeile der „Datentabelle“ und nicht nach Datum sortiert.
Ich benötige nach Datum sortiert.
Vielleicht hast du ja trotzdem einen guten Tipp ohne hochladen.
Schöner Gruß
Thomas
Anzeige
AW: Ganz super wäre.....
09.01.2020 19:41:20
KTom
Hallo Werner,
meine Tabellenblatt Datentabelle wird jetzt nachträglich sortiert.
Funktioniert. Makro: siehe meine Antwort an anderen Forumsteilnehmer.
Danke
Schöne Grüße
Thomas
AW: Daten von Userform in Tabelle einfügen nach Datum sortiert
06.01.2020 16:02:14
Userform
Du schreibst Text in die Zelle was aussieht wie ein Datum
cdate(UFAusIchNahrungEssenX.TextBox1.Text)

AW: Daten von Userform in Tabelle einfügen nach Datum sortiert
06.01.2020 16:56:06
Userform
Hallo Hajo_Zi,
Ich bin vba Neuling. Ich habe mir die Codes irgendwie selber zusammengebastelt.
Das „cdate steht nur beim Datum. In Textbox2 wird das Datum eingeben. Hier habe ich das CDate verwendet, sodass die Eingabe dieser Textbox2 als Datum übergeben wird. Dieses wird mit den restlichen Daten mit dem Button „Eingabe buchen“
in das Tabellenblatt „Datentabelle“ übertragen.
In dem von dir erwähnten Code mit Textbox1 steht die Beschreibung (Text)
Aktuell werden die Eingaben immer in die erste leere Zeile der „Datentabelle“ geschrieben.
Wie kann man die userform-Eingaben nach Datum sortiert in das Tabellenblatt „Datentabelle“ einfügen lassen?
Gruß Thomas
Anzeige
AW: Daten von Userform in Tabelle einfügen nach Datum sortiert
06.01.2020 17:05:31
Userform
Gut Du hast es mit Cdate in die Zelle geschrieben also kann es jetzt auch sortiert werden.
Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue.Ich baue keine Datei nach.
Sollte die Datei verlinkt werden?
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
http://www.ms-office-forum.de/forum/showthread.php?t=322895
änderrn.
Das ist nur meine Meinung zu dem Thema.
Gruß Hajo
Anzeige
DatenvonUserforminTabelleeinfügennachDatumsortiert
09.01.2020 19:32:14
KTom
Hallo Hajo,
jetzt funktioniert es. Datentabelle wird nachträglich nach Datum sortiert.
Das Makro und mein Lösungsweg steht im Beitrag von @Pierre
Danke Hajo
Schöne Grüße
Thomas
AW: Daten von Userform in Tabelle einfügen nach Datum sortiert
07.01.2020 07:59:40
Userform
Hallo Thomas,
eine Möglichkeit wäre, die Sortierung z. B. auf einen 2. CommandButton zu legen.
Dann würdest du alle Einträge vornehmen und anschließend ganz zum Schluss deine Tabelle neu sortieren.

Private Sub CommandButton2_Click()
Dim leZeile As Long
leZeile = Cells(Rows.Count, 1).End(xlUp).Row
Range("A1:D" & leZeile).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
Ich nehme an, dass in deiner Tabelle Überschriften in Zeile 1 vorhanden sind.
Gruß Pierre
Anzeige
DatenvonUserforminTabelleeinfügennachDatumsortiert
09.01.2020 19:20:24
KTom
Hallo Pierre,
danke für den Code.
Ich habe diesen so eingegeben. Leider ist hier dann eine Fehlermeldung gekommen:
"Laufzeitfehler 1004, Die Sort-Methode des Range-Objekts konnte nicht ausgeführt werden"
Ich habe dann noch ein bisschen an dem Code rumgebastelt. Kein Erfolg.
Jetzt mache ich es so ähnlich, wie du vorgeschlagen hast.
Heute habe ich mir ein Makro aufgezeichnet, welches das Tabellenblatt "Datentabelle" nach Datum sortiert.
Dieses habe ich dann mit Worksheet_Activate in die Datentabelle hinterlegt
Private Sub Worksheet_Activate()
Range("A2").Select
ActiveWorkbook.Worksheets("Datentabelle").ListObjects("Data").Sort.SortFields. _
Clear
ActiveWorkbook.Worksheets("Datentabelle").ListObjects("Data").Sort.SortFields. _
Add2 Key:=Range("Data[Datum:]"), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Datentabelle").ListObjects("Data").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Sobald jetzt das Tabellenblatt "Datentabelle" aktiviert wird, wird dieses nach Datum sortiert.
FUNKTIONIRT.
Vielen Dank für Deine Hilfe
Schöne Grüße
Thomas
Anzeige

347 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige