Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: vbOKCancel - wie Abbrechen?

vbOKCancel - wie Abbrechen?
07.02.2009 10:23:00
Wolfgang
Hallo,
ich würde mit untenstehendem Code gerne erreichen, dass die Textbox7 überprüft wird und sofern sich eine Zahl mit höher 12 darin befindet, eine MsgBox erscheint. Der User soll danach selbst entscheiden können, ob er bei dem Eintrag bleibt oder ob er die Eingabe abbrechen möchte. Was mußt ich verändern, damit der Code bei Abbrechen auch wirklich beendet wird und nicht noch die Folgeaktivitäten -in diesem Fall der Eintrag in eine Tabelle- erfolgt? - Danke schon jetzt für die Rückmeldungen.
Gruß - Wolfgang

Private Sub CommandButton4_Click() 'Eintragen
If PruefungTextBox Then
MsgBox "Angaben sind noch nicht vollständig!", vbInformation
Exit Sub
Else
If TextBox7.Text > 12 Then
MsgBox "wirklich diese Dauer?", vbOKCancel
If vbOKCancel = vbCancel Then
Exit Sub
Else
Call Eintrag
End If
End If
End If
End Sub


Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vbOKCancel - wie Abbrechen?
07.02.2009 10:39:00
Sigi
Hallo Wolfgang,
du brauchst eine Variable, die die Beantwortung der MsgBox aufnimmt. Diese Antwort kannst du dann auswerten. Bsp.
Dim ButtonAntwort As Long
ButtonAntwort = MsgBox("Wirklich diese Dauer?", vbOKCancel, "Titel")
If ButtonAntwort = vbCancel Then
Exit Sub
Else
Call Eintrag
End If
Gruß
Sigi
Anzeige
X=Msgbox ... If x = 2 Then ...
07.02.2009 10:44:00
Matthias
Hallo

Option Explicit
Sub wolfgang()
Dim x
x = MsgBox("wirklich diese Dauer?", vbOKCancel)
If x = 2 Then MsgBox "Abbruch gedrückt": Exit Sub
If x = 1 Then MsgBox "ok gedrückt"
End Sub


Gruß Matthias

AW: vbOKCancel - wie Abbrechen?
07.02.2009 10:53:18
Gerd
Hallo Wolfgang,
da muss nicht unbedingt eine zusätzliche Variable her.

Sub Demo()
If TextBox1.Text * 1  > 12 Then
If MsgBox("wirklich diese Dauer?", vbOKCancel) = _
vbCancel Then Exit Sub
End If
End Sub


Gruß Gerd

Anzeige
AW: vbOKCancel - wie Abbrechen?
07.02.2009 11:11:09
Wolfgang
Hallo Gerd,
Danke zunächst für die Rückmeldung; habe den Code soweit angepasst. "Abbrechen" funktioniert soweit, bei "OK" müßte er aber weiter machen und das Modul "Eintrag" müßte rennen. Das passiert aber nicht, was mache ich da noch falsch?
Gruß - Wolfgang
und so ohne Exit Sub
07.02.2009 11:08:22
Matthias
Hallo


Option Explicit
Sub wolfgang2()
Dim x
x = MsgBox("wirklich diese Dauer?", vbOKCancel)
If x = 1 Then
MsgBox "ok gedrückt"
'hier Dein weiterer Code
Else
MsgBox "schließen / abbrechen gedrückt"
End If
End Sub



Gruß Matthias
Anzeige
AW: und so halt auch ohne Exit Sub
07.02.2009 12:12:17
Gerd
Hallo Wolfgang, hallo Matthias,
Exit Sub oder nicht, ist m.E. häufig lediglich eine Stilfrage.

Private Sub CommandButton4_Click() 'Eintragen
If PruefungTextBox Then
MsgBox "Angaben sind noch nicht vollständig!", vbInformation
ElseIf TextBox7.Text * 1 


Gruß Gerd

Anzeige
Danke, Gerd, Matthias und Sigi
07.02.2009 13:21:00
Wolfgang
Hallo Gerd, Matthias und Sigi,
recht herzlichen Dank für Eure Rückmeldungen und Ausarbeitungen. Ich habe, nachdem der super läuft, Deinen Code, Gerd, "eingebaut".
Gruß und ein schönes Wochenende
Wolfgang
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Verwendung von vbOKCancel in VBA zur Abbruchkontrolle


Schritt-für-Schritt-Anleitung

  1. Erstellen eines CommandButtons: Füge einen CommandButton in Dein Excel-Arbeitsblatt ein.

  2. VBA-Code hinzufügen: Öffne den VBA-Editor (Alt + F11) und füge den folgenden Code in das entsprechende Modul ein:

    Private Sub CommandButton4_Click() 'Eintragen
       If PruefungTextBox Then
           MsgBox "Angaben sind noch nicht vollständig!", vbInformation
           Exit Sub
       ElseIf TextBox7.Text * 1 > 12 Then
           Dim ButtonAntwort As Long
           ButtonAntwort = MsgBox("wirklich diese Dauer?", vbOKCancel, "Titel")
           If ButtonAntwort = vbCancel Then
               Exit Sub
           Else
               Call Eintrag
           End If
       End If
    End Sub
  3. Testen des Codes: Teste den Code, indem Du verschiedene Werte in TextBox7 eingibst. Achte darauf, dass der Eintrag in die Tabelle nur erfolgt, wenn der Benutzer „OK“ wählt.


Häufige Fehler und Lösungen

  • Fehler: Die MsgBox zeigt nicht die erwartete Antwort an.

    • Lösung: Stelle sicher, dass Du die Variable zur Speicherung der Antwort korrekt definiert hast, wie im Schritt-für-Schritt-Anleitung gezeigt.
  • Fehler: Trotz „OK“ wird die Aktion nicht ausgeführt.

    • Lösung: Überprüfe, ob die Variable ButtonAntwort richtig ausgewertet wird und dass der Call Eintrag-Befehl nach dem If-Block steht.

Alternative Methoden

Eine alternative Methode ohne die Verwendung einer zusätzlichen Variablen könnte so aussehen:

Private Sub CommandButton4_Click() 'Eintragen
    If PruefungTextBox Then
        MsgBox "Angaben sind noch nicht vollständig!", vbInformation
    ElseIf TextBox7.Text * 1 > 12 Then
        If MsgBox("wirklich diese Dauer?", vbOKCancel) = vbCancel Then Exit Sub
        Call Eintrag
    End If
End Sub

Diese Methode reduziert den Code und vermeidet die Notwendigkeit einer zusätzlichen Variablen, was in vielen Fällen den Code einfacher und leserlicher macht.


Praktische Beispiele

Ein einfaches Beispiel zur Verwendung von MsgBox mit vbOKCancel:

Sub EinfachesBeispiel()
    Dim Antwort As VbMsgBoxResult
    Antwort = MsgBox("Möchten Sie das Programm beenden?", vbOKCancel, "Beenden")
    If Antwort = vbOK Then
        MsgBox "Programm wird beendet."
    Else
        MsgBox "Fortfahren."
    End If
End Sub

Hier wird eine einfache Entscheidung getroffen, ob das Programm beendet werden soll oder nicht.


Tipps für Profis

  • Verwendung von Konstanten: Verwende die Konstanten vbOK und vbCancel, um Deinen Code lesbarer zu machen.
  • Nachrichtentitel anpassen: Vergiss nicht, den Titel der MsgBox anzupassen, um den Benutzern klarere Informationen zu bieten.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um unerwartete Probleme während der Ausführung zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich die MsgBox anpassen? Du kannst die MsgBox anpassen, indem Du den Text und den Titel in den entsprechenden Funktionen änderst.

2. Was passiert, wenn ich Exit Sub nicht benutze? Wenn Du Exit Sub nicht verwendest, wird der Code nach der MsgBox weiter ausgeführt, was zu unerwünschten Aktionen führen kann.

3. Kann ich auch andere Antwortoptionen verwenden? Ja, Du kannst auch andere Optionen wie vbYesNo verwenden, um unterschiedliche Benutzerentscheidungen zu ermöglichen.

4. Wie funktioniert die Fehlerbehandlung in VBA? Du kannst On Error GoTo verwenden, um Fehler in Deinem Code zu behandeln, was besonders nützlich sein kann, wenn Du mit Benutzereingaben arbeitest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige