Zeile löschen mit nachfragen über Msg Box
#1
Hallo!

ich habe folgenden Code:


Code:
'Löschen Schaltfläche Ereignisroutine
Private Sub CommandButton2_Click()

  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 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, 1).Value)) <> ""
   
        'Datensatz ID Spalte mit selektiertem Eintrag der ListBox vergleichen
        If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).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
   
End Sub



Nun möchte ich vor dem Löschen noch eine MsgBox öffnen:

Code:
If MsgBox("Daten entgültig löschen?", vbYesNo) = vbYes Then xxxx

End If



Wenn ich aber dies oben einfügen:
Code:
'Löschen Schaltfläche Ereignisroutine
Private Sub CommandButton2_Click()
If MsgBox("Daten entgültig löschen?", vbYesNo) = vbYes Then Tabelle1.Rows(CStr(lZeile & ":" & lZeile)).Delete

End If
  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 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, 1).Value)) <> ""
   
        'Datensatz ID Spalte mit selektiertem Eintrag der ListBox vergleichen
        If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).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
   
End Sub

kommt der Fehler:

Debug: Fehler beim Kompilieren---Variable nicht definiert.

Wenn ich dann den 2.Code lösche ,funktioniert es,
Warum ?die Variable ist doch definiert.
Top
#2
Hallo,

(15.05.2016, 13:47)Nixblick0815 schrieb: Debug: Fehler beim Kompilieren---Variable nicht definiert.

Wenn ich dann den 2.Code lösche ,funktioniert es,
Warum ?die Variable ist doch definiert.

was steht denn zum Zeitpunkt der MsgBox-Abfrage in der Variable?! ;)

Gruß Uwe
Top
#3
ok beim reinschreiben und herumexperimentieren.

Hier der funktionierende Code:


Code:
'Löschen Schaltfläche Ereignisroutine
Private Sub CommandButton2_Click()
If MsgBox("Eintrag wirklich löschen?", vbYesNo + vbQuestion, _
"Frage") = 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 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, 1).Value)) <> ""
   
        'Datensatz ID Spalte mit selektiertem Eintrag der ListBox vergleichen
        If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).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
EndeMakro:
End Sub
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste