Ich habe Tabellenblatt1(Stammdaten) und Tabellenblatt9(Geburtstag)
Mein Prolem ist, alles was ich in Tabellenblatt1(Stammdaten) an Mitarbeitern neu anlege wird auch Tabellenblatt9(Geburtstag) hinzugefügt! Von Tabellenblatt9(Geburtstag) wird nun meine Listbox Geburtstag befüllt. klappt auch super!
Jetzt möchte ich aber, wenn ein Mitarbeiter in Tabellenblatt1(Stammdaten) gelöscht wird, dieser auch in dem Tabellenblatt9(Geburtstag) gelöscht wird, da ich sonst Laufzeitfehler 2147467259 (Nicht näher bezeichneter Fehler)bekomme und unten der Befehl ListGeb.Clear gelb markiert wird. Habe versucht unten anzupassen, hat aber leider nicht funktioniert.
Wär für eure Hilfe sehr Dankbar.
Gruss Michael
'############################ Mitarbeiter löschen ######################################################################################
Private Sub cmdLöschen_Click()
Dim lZeile As Long
If MsgBox("Möchtest du den Mitarbeiter wirklich löschen?", vbYesNo) = vbNo Then
Unload Me
FormularMitarbeiter.Show
End If
'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
If ListBox1.ListIndex = -1 Then Exit Sub
'Zum Löschen benötigen wir die Zeilennummer des ausgewählten Datensatzes
lZeile = 2 'Start in Zeile 2, Zeile 1 sind ja die Überschriften
'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
Do While Trim(CStr(Tabelle1.Cells(lZeile, 3).Value)) ""
'Datensatz Name Spalte mit selektiertem Eintrag der ListBox vergleichen
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 3).Value)) Then
'Eintrag gefunden, die ganze Zeile wird nun gelöscht
Tabelle1.Rows(CStr(lZeile & ":" & lZeile)).Delete
'Die ListBox muss nun neu geladen werden!
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
End If
lZeile = lZeile + 1 'Nächste Zeile bearbeiten
Loop
'Mitarbeiter aus Geburtstagsliste löschen
If MsgBox("Möchtest du den Mitarbeiter wirklich löschen?", vbYesNo) = vbNo Then
Unload Me
FormularMitarbeiter.Show
End If
'Wenn kein Datensatz in der ListBox markiert wurde, wird die Routine beendet
If ListBox1.ListIndex = -1 Then Exit Sub
'Zum Löschen benötigen wir die Zeilennummer des ausgewählten Datensatzes
lZeile = 2 'Start in Zeile 2, Zeile 1 sind ja die Überschriften
'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
Do While Trim(CStr(Tabelle1.Cells(lZeile, 3).Value)) ""
'Datensatz Name Spalte mit selektiertem Eintrag der ListBox vergleichen
If ListBox1.Text = Trim(CStr(Tabelle9.Cells(lZeile, 5).Value)) Then
'Eintrag gefunden, die ganze Zeile wird nun gelöscht
Tabelle9.Rows(CStr(lZeile & ":" & lZeile)).Delete
'Die ListBox muss nun neu geladen werden!
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
End If
lZeile = lZeile + 1 'Nächste Zeile bearbeiten
Loop
'Liste Stammdaten neu sortieren
loLetzte = Sheets("Stammdaten").Cells(Rows.Count, 3).End(xlUp).Row
ActiveWorkbook.Worksheets("Stammdaten").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Stammdaten").Sort.SortFields.Add Key:=Range( _
"C2:C" & loLetzte), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Stammdaten").Sort
.SetRange Range("A2:W" & loLetzte)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Unload Me
FormularMitarbeiter.Show
End Sub
'###################################### Geburts-und Jubilarstage aus Geburtstage In Listbox einlesen ###########################################################################
ListGeb.Clear
Dim breite(4 To 11) As Single
Dim spaltenbreite As String
For i = 4 To 11
breite(i) = Sheets(1).Columns(i).ColumnWidth * 6 '5.075 ##Spaltenbreite angepasst##
spaltenbreite = spaltenbreite & breite(i) & ";"
Next
With Me.ListGeb
.ColumnCount = 8
.ColumnHeads = True
.RowSource = "Geburtstag!D2:K500" '##Geburtstagsliste in Userform einlesen##
.ColumnWidths = spaltenbreite
ListGeb.ColumnWidths = "2,5cm;2,5cm;2,5cm;1,3cm;3cm;2,5cm;3,2cm;3cm"
End With
End Sub