Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1856to1860
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

Daten verschieben nach Eintrag in Box

Daten verschieben nach Eintrag in Box
12.11.2021 07:10:10
Kai
Hallo zusammen,
ich bastel noch immer an meiner Namensliste bei der mir Stefan schon sehr geholfen hat. Über Nacht ist mir eine neue Idee gekommen und hoffe das mir jemand bei der Lösung hilft .... :-)
Die Liste ist eine Mitarbeiterliste. Dort werden alle Mitarbeiter die bei uns sind oder waren in EINER Liste geführt. Das ist sehr unübersichtlich. Ich würde gerne beim Ausfüllen der Textbox (Austritt) den Mitarbeiter/in aus der aktuellen Liste herausnehmen und in eine neue Liste (ausgeschiedene Mitarbeiter) automatisch eintragen. Es müsste beim Speichern des Datensatzes eine Abfrage stattfinden, ob nur ein "Eintrittsdatum" (Textbox6) eingetragen ist, dann soll der Datensatz in der aktuellen Mitarbeiterliste erscheinen. Wenn die Textbox "Austritt" (Textbox9) ausgefüllt wird (egal ob Datum oder Text) ist der Datensatz in die Liste "ausgeschiedene Mitarbeiter" (Tabelle 2) zu schreiben und aus der aktuellen (Tabelle1) zu löschen. Klingt vielleicht etwas kompliziert aber besser kann ich es leider nicht beschreiben ... :-)
Ich hoffe auch dabei kann mir jemand helfen .... Danke!
Gruß Kai

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

Betreff
Datum
Anwender
Anzeige
AW: Daten verschieben nach Eintrag in Box
12.11.2021 08:08:12
Stefan
Hallo Kai,
das ist relativ einfach mit der Abfrage zu Verbinden, ob in Textbox9 (Austritt) etwas eingetragen ist. Den Code zum Speichern im jeweiligen Tabellenblatt, musst du noch einfügen.

Dim i As Integer
Dim lrange As Range
If TextBox9 = "" Then
'Dein Code zum Speichern der aktiven Mitarbeiter
ElseIf TextBox9  "" Then
'Dein Code zum Speichern der ehemaligen Mitarbeiter
Set lrange = Worksheets("Tabelle1").Range("F2:F300").Find(TextBox5.Text) 'Prüfen ob eingetragenes Namenskürzel vorhanden
If Not lrange Is Nothing Then 'Wenn Kürzel vorhanden
i = lrange.Row 'Zeile finden, in welcher das Namenskürzel steht
Worksheets("Tabelle1").Rows(i).Delete 'Gefundene Zeile löschen
End If
End If
Gruß
Stefan
Anzeige
AW: Daten verschieben nach Eintrag in Box
12.11.2021 08:30:05
Kai
Hallo Stefan,
hatte gehofft, Du nimmst Dich dem Problem an ...;-)
Einfach? Für Dich bestimmt, ich muss da echt basteln und probieren .... :-)
Das ist der bisherige Code, das Tabellenblatt für die ausgeschiedenen Mitarbeiter ist bisher nur angelegt (Kopie von Tabellenblatt1 nur umbenannt)
Wo muss ich das genau einfügen?
Danke Dir!
Gruß Kai
'Speichern Schaltfläche Ereignisroutine

Private Sub CommandButton3_Click()                                                          'Funktion wird aufgerufen, wenn CommandButton3 (Speichern) gedrückt wird
Dim lZeile As Long
Dim Datumalt As Date
Dim Datumneu As Date
'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
If ListBox1.ListIndex = -1 Then Exit Sub
'****Fehlermeldungen, welche erscheinen, wenn in der Eingabemaske nicht alle nötigen Angaben gemacht wurden****************************************************************
'Anrede
If OptionButton5 = False And OptionButton6 = False Then                                     'Prüfen, ob Anrede ausgefüllt wurde
'Falls nicht ausgefüllt, Meldung ausgeben und speichern abbrechen
MsgBox "Sie müssen eine passende Anrede auswählen!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
'Name
If Trim(CStr(TextBox1.Text)) = "" Then                                                      'Prüfen, ob Name ausgefüllt wurde
'Falls nicht ausgefüllt, Meldung ausgeben und speichern abbrechen
MsgBox "Sie müssen den Namen!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
'Vorname
If Trim(CStr(TextBox2.Text)) = "" Then                                                      'Prüfen, ob Vorname ausgefüllt wurde
'Falls nicht ausgefüllt, Meldung ausgeben und speichern abbrechen
MsgBox "Sie müssen den Vornamen!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
'Abteilung
If Trim(CStr(TextBox3.Text)) = "" Then                                                      'Prüfen, ob Abteilung ausgefüllt wurde
'Falls nicht ausgefüllt, Meldung ausgeben und speichern abbrechen
MsgBox "Sie müssen den Namen der Abteilung eingeben!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
'Personal-Nr.
'If Trim(CStr(TextBox4.Text)) = "" Then                                                      'Prüfen, ob Personal-Nr. ausgefüllt wurde
'Falls nicht ausgefüllt, Meldung ausgeben und speichern abbrechen
'MsgBox "Sie müssen die Personal-Nr. eingeben!", vbCritical + vbOKOnly, "FEHLER!"
'Exit Sub
'End If
'Kürzel
If Trim(CStr(TextBox5.Text)) = "" Then                                                      'Prüfen, ob Kürzel ausgefüllt wurde
'Falls nicht ausgefüllt, Meldung ausgeben und speichern abbrechen
MsgBox "Sie müssen das Kürzel eingeben!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
'Eintritt
If Trim(CStr(TextBox6.Text)) = "" Then                                                      'Prüfen, ob Eintritt ausgefüllt wurde
'Falls nicht ausgefüllt, Meldung ausgeben und speichern abbrechen
MsgBox "Sie müssen den Eintritt eingeben!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
'Austritt
'If Trim(CStr(TextBox6.Text)) = "" Then                                                      'Prüfen, ob Austritt ausgefüllt wurde
'Falls nicht ausgefüllt, Meldung ausgeben und speichern abbrechen
'MsgBox "Sie müssen den Austritt eingeben!", vbCritical + vbOKOnly, "FEHLER!"
'Exit Sub
'End If
lZeile = ListBox1.ListIndex                                                                 'lZeile den mit dem ListIndex überschreiben
If OptionButton5.Value = True Then                                                          'Falls Optionbutton5 (Anrede = Herr) angekreuzt wird
Tabelle1.Cells(lZeile + 2, 1) = "Herr"                                                  '"Herr" als Anrede in Tabelle eingetragen
End If
If OptionButton6.Value = True Then                                                          'Falls Optionbutton6 (Anrede = Frau) angekreuzt wird
Tabelle1.Cells(lZeile + 2, 1) = "Frau"                                                  'wird "Frau" als Anrede in Tabelle eingetragen
End If
'Eintrag gefunden, TextBoxen in die Zellen schreiben
Tabelle1.Cells(lZeile + 2, 2).Value = Trim(CStr(TextBox1.Text))
Tabelle1.Cells(lZeile + 2, 3).Value = TextBox2.Text
Tabelle1.Cells(lZeile + 2, 4).Value = TextBox3.Text
Tabelle1.Cells(lZeile + 2, 5).Value = TextBox4.Text
Tabelle1.Cells(lZeile + 2, 6).Value = TextBox5.Text
Tabelle1.Cells(lZeile + 2, 7).Value = TextBox6.Text
'If TextBox9.Text = "" Then
'TextBox9.Text = TextBox6.Text
'End If
Tabelle1.Cells(lZeile + 2, 8).Value = TextBox9.Text
Tabelle1.Cells(lZeile + 2, 9).Value = Date  'DateAdd("d", 0, TextBox9.Text)                       'Datum aufaddiert in Form: "d" für Tag, "30" Anzahl der Tage, Value)
'Tabelle1.Cells(lZeile + 2, 10).Value = Date
Call UserForm_Initialize                                                                    'Funktion "Useform_Initialize" aufrufen
If ListBox1.ListIndex = -1 Then Exit Sub                                                    'Falls kein Eintrag markiert, Funktion beenden
ListBox1.ListIndex = lZeile                                                                 'Nach Aktualisierung wird Makierung zurückgesetzt, deswegen alte Markierung wiederherstellen
End Sub

Anzeige
AW: Daten verschieben nach Eintrag in Box
12.11.2021 08:39:22
Stefan
Hallo Kai,
ohne mir jetzt den Rest von dem Code anzusehen, außerdem natürlich ungetestet.

Private Sub CommandButton3_Click()                                                          'Funktion wird aufgerufen, wenn CommandButton3 (Speichern) gedrückt wird
Dim lZeile As Long
Dim Datumalt As Date
Dim Datumneu As Date
Dim i As Integer
Dim lrange As Range
'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
If ListBox1.ListIndex = -1 Then Exit Sub
'****Fehlermeldungen, welche erscheinen, wenn in der Eingabemaske nicht alle nötigen Angaben gemacht wurden****************************************************************
'Anrede
If OptionButton5 = False And OptionButton6 = False Then                                     'Prüfen, ob Anrede ausgefüllt wurde
'Falls nicht ausgefüllt, Meldung ausgeben und speichern abbrechen
MsgBox "Sie müssen eine passende Anrede auswählen!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
'Name
If Trim(CStr(TextBox1.Text)) = "" Then                                                      'Prüfen, ob Name ausgefüllt wurde
'Falls nicht ausgefüllt, Meldung ausgeben und speichern abbrechen
MsgBox "Sie müssen den Namen!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
'Vorname
If Trim(CStr(TextBox2.Text)) = "" Then                                                      'Prüfen, ob Vorname ausgefüllt wurde
'Falls nicht ausgefüllt, Meldung ausgeben und speichern abbrechen
MsgBox "Sie müssen den Vornamen!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
'Abteilung
If Trim(CStr(TextBox3.Text)) = "" Then                                                      'Prüfen, ob Abteilung ausgefüllt wurde
'Falls nicht ausgefüllt, Meldung ausgeben und speichern abbrechen
MsgBox "Sie müssen den Namen der Abteilung eingeben!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
'Personal-Nr.
'If Trim(CStr(TextBox4.Text)) = "" Then                                                      'Prüfen, ob Personal-Nr. ausgefüllt wurde
'Falls nicht ausgefüllt, Meldung ausgeben und speichern abbrechen
'MsgBox "Sie müssen die Personal-Nr. eingeben!", vbCritical + vbOKOnly, "FEHLER!"
'Exit Sub
'End If
'Kürzel
If Trim(CStr(TextBox5.Text)) = "" Then                                                      'Prüfen, ob Kürzel ausgefüllt wurde
'Falls nicht ausgefüllt, Meldung ausgeben und speichern abbrechen
MsgBox "Sie müssen das Kürzel eingeben!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
'Eintritt
If Trim(CStr(TextBox6.Text)) = "" Then                                                      'Prüfen, ob Eintritt ausgefüllt wurde
'Falls nicht ausgefüllt, Meldung ausgeben und speichern abbrechen
MsgBox "Sie müssen den Eintritt eingeben!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
'Austritt
'If Trim(CStr(TextBox6.Text)) = "" Then                                                      'Prüfen, ob Austritt ausgefüllt wurde
'Falls nicht ausgefüllt, Meldung ausgeben und speichern abbrechen
'MsgBox "Sie müssen den Austritt eingeben!", vbCritical + vbOKOnly, "FEHLER!"
'Exit Sub
'End If
If TextBox9 = "" Then
With Tabelle1
lZeile = ListBox1.ListIndex                                                                 'lZeile den mit dem ListIndex überschreiben
If OptionButton5.Value = True Then                                                          'Falls Optionbutton5 (Anrede = Herr) angekreuzt wird
.Cells(lZeile + 2, 1) = "Herr"                                                  '"Herr" als Anrede in Tabelle eingetragen
ElseIf OptionButton6.Value = True Then                                                          'Falls Optionbutton6 (Anrede = Frau) angekreuzt wird
.Cells(lZeile + 2, 1) = "Frau"                                                  'wird "Frau" als Anrede in Tabelle eingetragen
End If
'Eintrag gefunden, TextBoxen in die Zellen schreiben
.Cells(lZeile + 2, 2).Value = Trim(CStr(TextBox1.Text))
.Cells(lZeile + 2, 3).Value = TextBox2.Text
.Cells(lZeile + 2, 4).Value = TextBox3.Text
.Cells(lZeile + 2, 5).Value = TextBox4.Text
.Cells(lZeile + 2, 6).Value = TextBox5.Text
.Cells(lZeile + 2, 7).Value = TextBox6.Text
.Cells(lZeile + 2, 8).Value = TextBox9.Text
.Cells(lZeile + 2, 9).Value = Date  'DateAdd("d", 0, TextBox9.Text)                       'Datum aufaddiert in Form: "d" für Tag, "30" Anzahl der Tage, Value)
End With
ElseIf TextBox9  "" Then
With Tabelle2
lZeile = ListBox1.ListIndex                                                                 'lZeile den mit dem ListIndex überschreiben
If OptionButton5.Value = True Then                                                          'Falls Optionbutton5 (Anrede = Herr) angekreuzt wird
.Cells(lZeile + 2, 1) = "Herr"                                                  '"Herr" als Anrede in Tabelle eingetragen
ElseIf OptionButton6.Value = True Then                                                          'Falls Optionbutton6 (Anrede = Frau) angekreuzt wird
.Cells(lZeile + 2, 1) = "Frau"                                                  'wird "Frau" als Anrede in Tabelle eingetragen
End If
'Eintrag gefunden, TextBoxen in die Zellen schreiben
.Cells(lZeile + 2, 2).Value = Trim(CStr(TextBox1.Text))
.Cells(lZeile + 2, 3).Value = TextBox2.Text
.Cells(lZeile + 2, 4).Value = TextBox3.Text
.Cells(lZeile + 2, 5).Value = TextBox4.Text
.Cells(lZeile + 2, 6).Value = TextBox5.Text
.Cells(lZeile + 2, 7).Value = TextBox6.Text
.Cells(lZeile + 2, 8).Value = TextBox9.Text
.Cells(lZeile + 2, 9).Value = Date  'DateAdd("d", 0, TextBox9.Text)                       'Datum aufaddiert in Form: "d" für Tag, "30" Anzahl der Tage, Value)
End With
Set lrange = Tabelle1.Range("F2:F300").Find(TextBox5.Text) 'Prüfen ob eingetragenes Namenskürzel vorhanden
If Not lrange Is Nothing Then 'Wenn Kürzel vorhanden
i = lrange.Row 'Zeile finden, in welcher das Namenskürzel steht
Tabelle1.Rows(i).Delete 'Gefundene Zeile löschen
End If
End With
Call UserForm_Initialize                                                                    'Funktion "Useform_Initialize" aufrufen
If ListBox1.ListIndex = -1 Then Exit Sub                                                    'Falls kein Eintrag markiert, Funktion beenden
ListBox1.ListIndex = lZeile                                                                 'Nach Aktualisierung wird Makierung zurückgesetzt, deswegen alte Markierung wiederherstellen
End Sub
Gruß
Stefan
Anzeige
AW: Daten verschieben nach Eintrag in Box
12.11.2021 09:37:38
Kai
Hallo Stefan,
leider meckert Excel ....
End With
Set lrange = Tabelle1.Range("F2:F300").Find(TextBox5.Text) 'Prüfen ob eingetragenes Namenskürzel vorhanden
If Not lrange Is Nothing Then 'Wenn Kürzel vorhanden
i = lrange.Row 'Zeile finden, in welcher das Namenskürzel steht
Tabelle1.Rows(i).Delete 'Gefundene Zeile löschen
End If
End With (Fehlermeldung: Fehler beim Kompilieren - End With ohne With) ?
Call UserForm_Initialize 'Funktion "Useform_Initialize" aufrufen
If ListBox1.ListIndex = -1 Then Exit Sub 'Falls kein Eintrag markiert, Funktion beenden
ListBox1.ListIndex = lZeile 'Nach Aktualisierung wird Makierung zurückgesetzt, deswegen alte Markierung wiederherstellen
Anzeige
AW: Daten verschieben nach Eintrag in Box
12.11.2021 09:51:44
Stefan
Sorry, das war ein Flüchtigkeitsfehler

End With
Set lrange = Tabelle1.Range("F2:F300").Find(TextBox5.Text) 'Prüfen ob eingetragenes Namenskürzel vorhanden
If Not lrange Is Nothing Then 'Wenn Kürzel vorhanden
i = lrange.Row 'Zeile finden, in welcher das Namenskürzel steht
Tabelle1.Rows(i).Delete 'Gefundene Zeile löschen
End If
End if 
Call UserForm_Initialize                                                                    'Funktion "Useform_Initialize" aufrufen
If ListBox1.ListIndex = -1 Then Exit Sub                                                    'Falls kein Eintrag markiert, Funktion beenden
ListBox1.ListIndex = lZeile                                                                 'Nach Aktualisierung wird Makierung zurückgesetzt, deswegen alte Markierung wiederherstellen
End Sub
Gruß
Stefan
Anzeige
AW: Daten verschieben nach Eintrag in Box
12.11.2021 10:29:43
Kai
Hallo Stefan,
das Verschieben klappt schon super, der Eintrag wird leider nur 1:1 verschoben, d.h. habe ich einen Mitarbeiter der z.B. in Zeile 333 steht, verschiebt er ihn auch nach Zeile 333 im anderen Tabellenblatt. Er sollte aber ihn in die 1. freie Zeile des Blattes verschieben.
wenn das so ist....
12.11.2021 10:32:11
Stefan
brauch ich bitte deine ganze Bsp Mappe.
Gruß
Stefan
AW: wenn das so ist....
12.11.2021 11:17:35
Kai
So ganz klappt es noch nicht, wenn ich einen Namen lösche wird die Anrede 2 Zeilen tiefer in die Liste eingetragen und wenn ich einen 2. Namen lösche, wird der 1. Name wieder überschrieben....
AW: wenn das so ist....
12.11.2021 13:09:20
Kai
Danke, das wünsche ich Dir auch ....!
Falls Du mal wieder on bist .... Die Kürzel werden jetzt nur in Tabelle 1 gesucht, es müssen aber auch die schon vergebenen Kürzel in Tabelle2 überprüft werden.

Private Sub TextBox2_AfterUpdate()
Dim i As Byte
If TextBox1  "" And TextBox2  "" Then
For i = 2 To Len(TextBox2.Text) 'Zeichen für Vorname "Min2 Max den gesamten Vornamen"
If Tabelle1.Range("F2:F200").Find(LCase(Left(TextBox1.Text, 1)) & LCase(Left(TextBox2.Text, 1)) & LCase(Right(Left(TextBox2.Text, i), 1))) Is Nothing Then 'wird gesucht ob das kürzel schon vorhanden
TextBox5.Text = LCase(Left(TextBox1.Text, 1)) & LCase(Left(TextBox2.Text, 1)) & LCase(Right(Left(TextBox2.Text, i), 1)) 'Kürzel in Textbox schreiben
Exit For 'Schleife verlassen
End If
Next
End If
End Sub

Anzeige
AW: wenn das so ist....
12.11.2021 14:33:23
Stefan
Servus again ^^

Private Sub TextBox2_AfterUpdate()
Dim i As Byte
Dim lrange As Range
Dim lrange2 As Range
If TextBox1  "" And TextBox2  "" Then
For i = 2 To Len(TextBox2.Text) 'Zeichen für Vorname "Min2 Max den gesamten Vornamen"
Set lrange = Tabelle1.Range("F2:F2000").Find(LCase(Left(TextBox1.Text, 1)) & LCase(Left(TextBox2.Text, 1)) & LCase(Right(Left(TextBox2.Text, i), 1)))
Set lrange2 = Tabelle2.Range("F2:F2000").Find(LCase(Left(TextBox1.Text, 1)) & LCase(Left(TextBox2.Text, 1)) & LCase(Right(Left(TextBox2.Text, i), 1)))
If lrange Is Nothing And lrange2 Is Nothing Then 'wird gesucht ob das kürzel schon vorhanden
TextBox5.Text = LCase(Left(TextBox1.Text, 1)) & LCase(Left(TextBox2.Text, 1)) & LCase(Right(Left(TextBox2.Text, i), 1)) 'Kürzel in Textbox schreiben
Exit For 'Schleife verlassen
End If
Next
End If
End Sub
Gruß Stefan
Anzeige
AW: wenn das so ist....
12.11.2021 14:44:02
Kai
Vielen, vielen Dank Stefan!!!
Du hast mir riesig geholfen. Ich werde am Montag alles mal testen und Dir Bescheid geben, ob alles funktioniert - bisher sieht es prima aus ...! :-)
Nochmals Danke und ein schönes WE - dahin gehe ich jetzt auch ...
Gruß Kai
Vielen Dank Stefan!
15.11.2021 13:36:44
Kai
Hallo Stefan,
ich habe alles mögliche probiert, es klappt wunderbar! Vielen Dank für Deine Hilfe!!
Gruß Kai
gerne, danke für die Rückmeldung....
16.11.2021 06:48:22
Stefan
....
gruß
Stefan

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige