ich habe mal was für die Profis, das vielleicht nicht ganz so einfach zu lösen ist. Ich habe es selber nicht hin bekommen, bin aber auch nicht mal ansatzweise der Profi.
Ich habe eine Userform bei der ich Zeilen beschreibe. Die erste Zeile ist die Kopfzeile und die zweite Zeile ist die Info Zeile.
Somit wird ab Zeile 3 mit der Userform geschrieben und kann so auch einzelne Zeilen löschen.
Wenn ich aber die ersten zwei Zeilen mit einem Blattschutz versehe, ist es mit nicht möglich irgendeine Zeile zu LÖSCHEN (Laufzeitfehler 1004, das nicht ausgeführt werden könnt).
Alles andere funktioniert Tadellos. Was habe ich in dem Code vergessen zu beachten ?
Hier mal der Code zum Löschen:
'Löschen Schaltfläche Ereignisroutine
Private Sub CommandButton2_Click()
If MsgBox("Eintrag wirklich löschen?", vbYesNo + vbQuestion, _
"Achtung") = vbYes Then GoTo Fortfahren Else GoTo EndeMakro
Fortfahren:
Dim lZeile As Long
'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 = 3 'Start in Zeile 3, Zeile 1 sind ja die Überschriften, 2 ist "-"
'Schleife solange etwas in der ersten Spalte in Tabelle 3 drin steht
Do While Trim(CStr(Tabelle3.Cells(lZeile, 1).Value)) ""
'Datensatz ID Spalte mit selektiertem Eintrag der ListBox vergleichen
If ListBox1.Text = Trim(CStr(Tabelle3.Cells(lZeile, 1).Value)) Then
'Eintrag gefunden, die ganze Zeile wird nun gelöscht
Tabelle3.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
EndeMakro:
End Sub