Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1700to1704
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

User Form eintag in Tabelle

User Form eintag in Tabelle
23.07.2019 07:55:19
Anna
Hallo zusammen,
Wir haben unseren Aufbau der Datei umgeändert.
ich habe diesen Code.
Private Sub cmd_speichern_Click()
Dim ws As Worksheet
Dim intLZ As Long
Dim Eingabe
If Me.Txt_Name  "" And Me.Txt_Personalnummer  "" And Me.Txt_Geburtsdatum  "" Then
Set ws = ThisWorkbook.Sheets("Mitarbeiter")
intLZ = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1
With Me
ws.Cells(intLZ, 2).Value = .Txt_Personalnummer
'.Txt_Personalnummer = ""
ws.Cells(intLZ, 3).Value = .Txt_Name
'.Txt_Name = ""
ws.Cells(intLZ, 4).Value = .Txt_Eintritt
'.Txt_Eintritt = ""
ws.Cells(intLZ, 6).Value = .Txt_Geburtsdatum
'.Txt_Geburtsdatum = ""
ws.Cells(intLZ, 8).Value = .ListBox1
'.ListBox1 = ""
ws.Cells(intLZ, 9).Value = .TxtAbt
'.TxtAbt = ""
ws.Cells(intLZ, 10).Value = .txt_Telefon
'.Txt_Telefon = ""
ws.Cells(intLZ, 11).Value = .txt_Handy
'.Txt_Handy = ""
ws.Cells(intLZ, 12).Value = .txt_info
'.Txt_Info = ""
If .Kinder.Value = True Then ws.Cells(intLZ, 13).Value = "Ja"
ws.Cells(intLZ, 17).Value = .txt_Urlaub
'.Txt_Urlaub = ""
End With
Set ws = Nothing
Else
MsgBox "Bitte alle Felder ausfüllen!!!", , "  Fehler !!!"
Me.Txt_Name.SetFocus
Exit Sub
End If
MsgBox "Daten wurden gespeichert !!!"
End Sub
Ich möchte jetzt das er den Namen in der Spalte C nicht unten dran hängt sondern nach Namen sortiert einfügt. Der bereich in A bis AK.
Außerdem soll das gleiche dann im Tabellenblatt Planer passieren.
Wäre sowas möglich ?
Danke euch

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: User Form eintag in Tabelle
23.07.2019 08:02:27
Werni
Hallo Anna
Dann sortiere am Schluss die Tabelle.
Das kannst du aufzeichnen.
Gruss Werni
AW: User Form eintag in Tabelle
23.07.2019 08:20:18
Anna
Guten Morgen Werni,
bei einigen sind Formeln hinterlegt, da würde es zum Schluß Probleme geben.
Deswegen wäre eine Änderung vom Code am Sinnvollsten.
Gruß Anna
AW: User Form eintag in Tabelle
23.07.2019 11:09:51
Matthias
Moin!
Hier mal dein Code angepasst. Sollte eigentlich passen, konnte es aber nicht testen. Du musst nur schauen, ab welcher Zeile er starten soll. ICh habe mit 2 begonnen, da in Zeile 1 vermtl. Überschriften stehen. Sollte der Name kleiner sein, wird an der Stelle eine Zeile eingefügt und die Werte dort eingetragen. Wenn nicht wird das am Ende angefügt. Musst mal schauen, ob das mit deinen Formeln dann noch passt (kenne die Datei nicht).
Private Sub cmd_speichern_Click()
Dim ws As Worksheet
Dim intLZ As Long, zeile As Long
Dim Eingabe
If Me.txt_Name  "" And Me.Txt_Personalnummer  "" And Me.Txt_Geburtsdatum  "" Then
Set ws = ThisWorkbook.Sheets("Planer") 'hier stand mal Mitarbeiter
intLZ = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1
For zeile = 2 To inLZ      'er sucht in der 2. Zeile, ggf. die 2 in eine andere Startzeile  _
ändern
If VBA.StrComp(Me.txt_Name, ws.Cells(zeile, 3)) = -1 Then
ws.Rows(zeile).Insert Shift:=xlDown    'Zeile einfügen
Exit For
End If
Next
'sollte der Wert nicht gefunden werden, wird unten angehangen
With Me
ws.Cells(zeile, 2).Value = .Txt_Personalnummer
'.Txt_Personalnummer = ""
ws.Cells(zeile, 3).Value = .txt_Name
'.Txt_Name = ""
ws.Cells(zeile, 4).Value = .Txt_Eintritt
'.Txt_Eintritt = ""
ws.Cells(zeile, 6).Value = .Txt_Geburtsdatum
'.Txt_Geburtsdatum = ""
ws.Cells(zeile, 8).Value = .ListBox1
'.ListBox1 = ""
ws.Cells(zeile, 9).Value = .TxtAbt
'.TxtAbt = ""
ws.Cells(zeile, 10).Value = .txt_Telefon
'.Txt_Telefon = ""
ws.Cells(zeile, 11).Value = .txt_Handy
'.Txt_Handy = ""
ws.Cells(zeile, 12).Value = .txt_info
'.Txt_Info = ""
If .Kinder.Value = True Then ws.Cells(zeile, 13).Value = "Ja"
ws.Cells(zeile, 17).Value = .txt_Urlaub
'.Txt_Urlaub = ""
End With
Set ws = Nothing
Else
MsgBox "Bitte alle Felder ausfüllen!!!", , "  Fehler !!!"
Me.txt_Name.SetFocus
Exit Sub
End If
MsgBox "Daten wurden gespeichert !!!"
End Sub

VG
Anzeige
AW: User Form eintag in Tabelle
24.07.2019 21:45:57
Anna
Hallo,
er muß es in Mitarbeiter und in Planer einfügen :-)
Danke
AW: User Form eintag in Tabelle
24.07.2019 22:00:13
Matthias
Moin!
Dann einfach mal so probieren. Habe da den Teil für das zweite Blatt nur darunter kopiert. Für 2 Blätter reicht das auch so. Bei mehr würde ich eine Schleife basteln - da hatte ich in anbetracht der Hitze grad keine Lust. :-)
Private Sub cmd_speichern_Click()
Dim ws As Worksheet
Dim intLZ As Long, zeile As Long
Dim Eingabe
If Me.txt_Name  "" And Me.Txt_Personalnummer  "" And Me.Txt_Geburtsdatum  "" Then
Set ws = ThisWorkbook.Sheets("Planer") 'hier stand mal Mitarbeiter
intLZ = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1
For zeile = 2 To inLZ      'er sucht in der 2. Zeile, ggf. die 2 in eine andere Startzeile  _
_
ändern
If VBA.StrComp(Me.txt_Name, ws.Cells(zeile, 3)) = -1 Then
ws.Rows(zeile).Insert Shift:=xlDown    'Zeile einfügen
Exit For
End If
Next
'sollte der Wert nicht gefunden werden, wird unten angehangen
With Me
ws.Cells(zeile, 2).Value = .Txt_Personalnummer
'.Txt_Personalnummer = ""
ws.Cells(zeile, 3).Value = .txt_Name
'.Txt_Name = ""
ws.Cells(zeile, 4).Value = .Txt_Eintritt
'.Txt_Eintritt = ""
ws.Cells(zeile, 6).Value = .Txt_Geburtsdatum
'.Txt_Geburtsdatum = ""
ws.Cells(zeile, 8).Value = .ListBox1
'.ListBox1 = ""
ws.Cells(zeile, 9).Value = .TxtAbt
'.TxtAbt = ""
ws.Cells(zeile, 10).Value = .txt_Telefon
'.Txt_Telefon = ""
ws.Cells(zeile, 11).Value = .txt_Handy
'.Txt_Handy = ""
ws.Cells(zeile, 12).Value = .txt_info
'.Txt_Info = ""
If .Kinder.Value = True Then ws.Cells(zeile, 13).Value = "Ja"
ws.Cells(zeile, 17).Value = .txt_Urlaub
'.Txt_Urlaub = ""
End With
Set ws = ThisWorkbook.Sheets("Mitarbeiter") 'hier stand mal Mitarbeiter
intLZ = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1
For zeile = 2 To inLZ      'er sucht in der 2. Zeile, ggf. die 2 in eine andere Startzeile  _
_
ändern
If VBA.StrComp(Me.txt_Name, ws.Cells(zeile, 3)) = -1 Then
ws.Rows(zeile).Insert Shift:=xlDown    'Zeile einfügen
Exit For
End If
Next
'sollte der Wert nicht gefunden werden, wird unten angehangen
With Me
ws.Cells(zeile, 2).Value = .Txt_Personalnummer
'.Txt_Personalnummer = ""
ws.Cells(zeile, 3).Value = .txt_Name
'.Txt_Name = ""
ws.Cells(zeile, 4).Value = .Txt_Eintritt
'.Txt_Eintritt = ""
ws.Cells(zeile, 6).Value = .Txt_Geburtsdatum
'.Txt_Geburtsdatum = ""
ws.Cells(zeile, 8).Value = .ListBox1
'.ListBox1 = ""
ws.Cells(zeile, 9).Value = .TxtAbt
'.TxtAbt = ""
ws.Cells(zeile, 10).Value = .txt_Telefon
'.Txt_Telefon = ""
ws.Cells(zeile, 11).Value = .txt_Handy
'.Txt_Handy = ""
ws.Cells(zeile, 12).Value = .txt_info
'.Txt_Info = ""
If .Kinder.Value = True Then ws.Cells(zeile, 13).Value = "Ja"
ws.Cells(zeile, 17).Value = .txt_Urlaub
'.Txt_Urlaub = ""
End With
Set ws = Nothing
Else
MsgBox "Bitte alle Felder ausfüllen!!!", , "  Fehler !!!"
Me.txt_Name.SetFocus
Exit Sub
End If
MsgBox "Daten wurden gespeichert !!!"
End Sub
VG
Anzeige
AW: User Form eintag in Tabelle
24.07.2019 22:10:37
Matthias
Ich nochmal! Das mit dem doppelten Code ist doch unschön - das kann ich nicht so stehen lassen. Hiermit sollte es auch klappen. Diesmal in einer Schleife.
Private Sub cmd_speichern_Click()
Dim ws As Worksheet
Dim intLZ As Long, zeile As Long
Dim Eingabe
Dim ziele()
Dim myind As Long
ziele = Array(Mitarbeiter, Planer) 'hier sind die gewünschten Blätter
If Me.txt_Name  "" And Me.Txt_Personalnummer  "" And Me.Txt_Geburtsdatum  "" Then
For myind = 0 To UBound(ziele)
Set ws = ziele(myind) 'hier stand mal Mitarbeiter
intLZ = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1
For zeile = 2 To inLZ      'er sucht in der 2. Zeile, ggf. die 2 in eine andere  _
Startzeile _
ändern
If VBA.StrComp(Me.txt_Name, ws.Cells(zeile, 3)) = -1 Then
ws.Rows(zeile).Insert Shift:=xlDown    'Zeile einfügen
Exit For
End If
Next
'sollte der Wert nicht gefunden werden, wird unten angehangen
With Me
ws.Cells(zeile, 2).Value = .Txt_Personalnummer
'.Txt_Personalnummer = ""
ws.Cells(zeile, 3).Value = .txt_Name
'.Txt_Name = ""
ws.Cells(zeile, 4).Value = .Txt_Eintritt
'.Txt_Eintritt = ""
ws.Cells(zeile, 6).Value = .Txt_Geburtsdatum
'.Txt_Geburtsdatum = ""
ws.Cells(zeile, 8).Value = .ListBox1
'.ListBox1 = ""
ws.Cells(zeile, 9).Value = .TxtAbt
'.TxtAbt = ""
ws.Cells(zeile, 10).Value = .txt_Telefon
'.Txt_Telefon = ""
ws.Cells(zeile, 11).Value = .txt_Handy
'.Txt_Handy = ""
ws.Cells(zeile, 12).Value = .txt_info
'.Txt_Info = ""
If .Kinder.Value = True Then ws.Cells(zeile, 13).Value = "Ja"
ws.Cells(zeile, 17).Value = .txt_Urlaub
'.Txt_Urlaub = ""
End With
Next
Set ws = Nothing
Else
MsgBox "Bitte alle Felder ausfüllen!!!", , "  Fehler !!!"
Me.txt_Name.SetFocus
Exit Sub
End If
MsgBox "Daten wurden gespeichert !!!"
End Sub

VG
Anzeige
AW: User Form eintag in Tabelle
25.07.2019 11:08:47
Anna
Hallo Matthias,
danke erstmal.
Den Code habe ich angepasst wie es sein Sollte. Leider ist immer eine Leerzeile dazschwissen und er sortiert es nicht.
Ich schick dir heute abend mal die Datei.
Dankeschön
Private Sub cmd_speichern_Click()
Dim ws As Worksheet
Dim intLZ As Long, zeile As Long
Dim Eingabe
If Me.Txt_Name  "" And Me.Txt_Personalnummer  "" And Me.Txt_Geburtsdatum  "" Then
Set ws = ThisWorkbook.Sheets("Planer") 'hier stand mal Mitarbeiter
intLZ = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1
For zeile = 9 To intLZ      'er sucht in der 2. Zeile, ggf. die 2 in eine andere  _
Startzeile
'ändern
If VBA.StrComp(Me.Txt_Name, ws.Cells(zeile, 3)) = -1 Then
ws.Rows(zeile).Insert Shift:=xlDown    'Zeile einfügen
Exit For
End If
Next
'sollte der Wert nicht gefunden werden, wird unten angehangen
With Me
ws.Cells(zeile, 1).Value = .Txt_Personalnummer
'.Txt_Personalnummer = ""
ws.Cells(zeile, 2).Value = .Txt_Name
'.Txt_Name = ""
'ws.Cells(zeile, 3).Value = .Txt_Eintritt
'.Txt_Eintritt = ""
' ws.Cells(zeile, 5).Value = .Txt_Geburtsdatum
'.Txt_Geburtsdatum = ""
ws.Cells(zeile, 3).Value = .ListBox1
'.ListBox1 = ""
ws.Cells(zeile, 4).Value = .TxtAbt
'.TxtAbt = ""
'ws.Cells(zeile, 9).Value = .Txt_Telefon
'.Txt_Telefon = ""
'ws.Cells(zeile, 10).Value = .Txt_Handy
'.Txt_Handy = ""
' ws.Cells(zeile, 11).Value = .Txt_Info
'.Txt_Info = ""
If .Kinder.Value = True Then ws.Cells(zeile, 5).Value = "Ja"
'ws.Cells(zeile, 16).Value = .Txt_Urlaub
'.Txt_Urlaub = ""
End With
Set ws = ThisWorkbook.Sheets("Mitarbeiter") 'hier stand mal Mitarbeiter
intLZ = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1
For zeile = 5 To intLZ      'er sucht in der 2. Zeile, ggf. die 2 in eine andere  _
Startzeile
'ändern
If VBA.StrComp(Me.Txt_Name, ws.Cells(zeile, 3)) = -1 Then
ws.Rows(zeile).Insert Shift:=xlDown    'Zeile einfügen
Exit For
End If
Next
'sollte der Wert nicht gefunden werden, wird unten angehangen
With Me
ws.Cells(zeile, 1).Value = .Txt_Personalnummer
'.Txt_Personalnummer = ""
ws.Cells(zeile, 2).Value = .Txt_Name
'.Txt_Name = ""
ws.Cells(zeile, 3).Value = .Txt_Eintritt
'.Txt_Eintritt = ""
ws.Cells(zeile, 5).Value = .Txt_Geburtsdatum
'.Txt_Geburtsdatum = ""
ws.Cells(zeile, 7).Value = .ListBox1
'.ListBox1 = ""
ws.Cells(zeile, 8).Value = .TxtAbt
'.TxtAbt = ""
ws.Cells(zeile, 9).Value = .txt_Telefon
'.Txt_Telefon = ""
ws.Cells(zeile, 10).Value = .txt_Handy
'.Txt_Handy = ""
ws.Cells(zeile, 11).Value = .txt_info
'.Txt_Info = ""
If .Kinder.Value = True Then ws.Cells(zeile, 12).Value = "Ja"
ws.Cells(zeile, 16).Value = .txt_Urlaub
'.Txt_Urlaub = ""
End With
Set ws = Nothing
Else
MsgBox "Bitte alle Felder ausfüllen!!!", , "  Fehler !!!"
Me.Txt_Name.SetFocus
Exit Sub
End If
MsgBox "Daten wurden gespeichert !!!"
End Sub

Anzeige
AW: beispiel datei
26.07.2019 14:27:17
Matthias
Moin!
Hier mal kein Code sondern Fragen zu Datei.
1. Heißt das Blatt Planer oder Paner? Dann muss man den Code später nicht nochmal ändern.
2. Sind im Blatt Mitarbeiter die Daten als Tabelle formatiert (intelligente Tabelle)? Das würde zum beschriebenen Problem passen und auch zum erkennbaren Format. Allerdings war das in der Datei so nicht eingestellt.
3. Im Blatt Planer gibt es aber keine Tabelle oder?
4. Soll dein Code auf eine neue leere Datei angewandt werden oder sind da schon Daten vorhanden? Hintergrund ist, dass der Code die Daten sortiert einträgt aber die Daten nicht jedesmal komplett sortiert. Das würde ja unnötig sein, wenn die Daten eh schon sortiert vorliegen und er sie an die richtige Stelle kopiert. Falls schon Daten da sind, würde ich eher vorschlagen, die am Anfang zu sortieren und dann den Code so ähnlich wie oben zu lassen. Damit geht das Eintragen dann auch schneller.
Und dann noch ein paar HInweise:
M.E. wäre es besser, den Namen und Vornamen zu trennen.
UNd in der UF1 mal die Aktivierungsreihenfolge der Elemente ändern. Dann könnte man mit dem Tabulator schön alle Felder durchklicken.
Ich würde mal unter der Vermutung, dass Mitarbeiter eine formatierte Tabelle sind und die Daten sortiert vorliegen / leer sind, mal den Code umbasteln.
VG
Anzeige
AW: beispiel datei
26.07.2019 16:40:05
Matthias
Nochmal ich!
Also habe mal den Code geändert. Wobei das Eintragen in Planer wieder raus ist. Da ist ja ein anderer Tabellenaufbau und zudem stehen dort immer Formeln drin.
Private Sub cmd_speichern_Click()
Dim ws As Worksheet
Dim intLZ As Long, zeile As Long
Dim Eingabe
Dim ziele()
Dim myind As Long
ziele = Array("Mitarbeiter") 'hier sind die gewünschten Blätter
If Me.Txt_Name  "" And Me.Txt_Personalnummer  "" And Me.Txt_Geburtsdatum  "" Then
For myind = 0 To UBound(ziele)
Set ws = Worksheets(ziele(myind)) 'hier stand mal Mitarbeiter
ws.Cells(1, 1).Select
intLZ = ws.Cells(Rows.Count, 1).End(xlUp).Row
For zeile = 5 To intLZ      'er sucht in der 2. Zeile, ggf. die 2 in eine andere _
Startzeile _
ändern
If VBA.StrComp(Me.Txt_Name, ws.Cells(zeile, 2), vbTextCompare) = -1 Then
ws.Rows(zeile).Insert Shift:=xlDown    'Zeile einfügen
Exit For
End If
Next
If zeile = intLZ + 1 Then ws.Rows(zeile).Insert Shift:=xlDown
'sollte der Wert nicht gefunden werden, wird unten angehangen
With Me
ws.Cells(zeile, 1).Value = .Txt_Personalnummer
'.Txt_Personalnummer = ""
ws.Cells(zeile, 2).Value = .Txt_Name
'.Txt_Name = ""
ws.Cells(zeile, 3).Value = .Txt_Eintritt
'.Txt_Eintritt = ""
ws.Cells(zeile, 5).Value = .Txt_Geburtsdatum
'.Txt_Geburtsdatum = ""
ws.Cells(zeile, 7).Value = .ListBox1
'.ListBox1 = ""
ws.Cells(zeile, 8).Value = .TxtAbt
'.TxtAbt = ""
ws.Cells(zeile, 9).Value = .Txt_Telefon
'.Txt_Telefon = ""
ws.Cells(zeile, 10).Value = .Txt_Handy
'.Txt_Handy = ""
ws.Cells(zeile, 11).Value = .Txt_Info
'.Txt_Info = ""
If .Kinder.Value = True Then ws.Cells(zeile, 11).Value = "Ja"
If .Txt_Urlaub  "" Then ws.Cells(zeile, 14).Value = CDbl(.Txt_Urlaub)
'.Txt_Urlaub = ""
End With
Next
Set ws = Nothing
Else
MsgBox "Bitte alle Felder ausfüllen!!!", , "  Fehler !!!"
Me.Txt_Name.SetFocus
Exit Sub
End If
MsgBox "Daten wurden gespeichert !!!"
End Sub

VG
Anzeige
AW: beispiel datei
26.07.2019 19:01:07
Anna
Hallo Matthias,
es funktioniert Super, wie kann ich es machen, das die Daten in das Tebellenblatt Planer dazu kommt ?
Ich habe es jetzt angepasst, das alles Spalten gleich sind bis Q und ausgeblendet. Wie kann das machen, das wenn eine eingabe ( neue Zeile, neuer Mitarbeiter) kommt, das die Formel angepasst wird?
https://www.herber.de/bbs/user/131109.xlsm
Danke erstmal für alles
AW: beispiel datei
26.07.2019 20:02:48
SF
Hola,
zur info....
https://www.clever-excel-forum.de/Thread-USER-Form
Gruß,
steve1da
AW: beispiel datei
26.07.2019 20:08:17
Anna
Hallo Steve,
Ich dachte das mir hier keiner hilft, deswegen habe ich mich wo anderst gewendet.
Ist das schlimm ?
Anzeige
AW: beispiel datei
26.07.2019 20:20:10
SF
Hola,
jetzt wird Dir in 2 Foren geholfen und die Helfer wissen nichts voneinander. Unter Umständen bekommst du die gleichen Lösungen, jemand hat also völlig umsonst für dich gearbeitet. Arbeitest du gerne umsonst?
Durch das Verlinken habe die Helfer zumindest die Chance nachzuschauen, ob es woanders schon Lösungen gibt.
Gruß,
steve1da
AW: beispiel datei
26.07.2019 20:23:49
Anna
Ah da hast du Recht. SORRY
AW: beispiel datei
27.07.2019 10:29:04
Matthias
Moin!
Da der Thread hier in 2 Tagen nicht mehr editierbar ist, würde ich vorschlagen, wir verlagern die Bearbeitung ausnahmesweise gleich ins CEF. Hat auch den Vorteil, dass du die Dateien nicht mehrfach posten musst und alle auf dem selben Stand sind. Zudem hat sich die Datei im CEF ja geändert, so dass ich nicht genau weiß, was noch aktuell ist.
VG
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige