Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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.
Antworten Top
#2
Hallo,

(15.05.2016, 12: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
Antworten 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
Antworten Top


Gehe zu:


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