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

Bei vbCancel Exit Sub

Forumthread: Bei vbCancel Exit Sub

Bei vbCancel Exit Sub
14.04.2008 18:57:00
Klaus
Hallo Forum,
mit folgendem Makro durchsuche ich den Spaltenbereich A:H nach einem Begriff
(es werden alle Fundstellen nacheinander angezeigt).
Ich möchte nun bei vbCancel einen Abbruch erzwingen.
Aber egal wo ich "If vbCancel then Exit Sub" platziere - es funktioniert nicht.
Kann mir da jemand helfen? Ein Danke im voraus
Klaus

Sub Auswahl()
Dim gZelle As Range, sBegriff$
sBegriff = InputBox("Bitte Suchbegriff eingeben:", _
Application.UserName)
If sBegriff = "" Then Exit Sub
Set gZelle = ActiveSheet.Columns("A:H").Find(sBegriff)
If gZelle Is Nothing Then
Beep
MsgBox "Suchbegriff nicht gefunden!", , _
Application.UserName
Exit Sub
End If
gZelle.Select
MsgBox gZelle.Address(False, False), vbOKCancel
gZelle.Offset(1).Select
While ActiveCell.Address  gZelle.Address
Cells.FindNext(After:=ActiveCell).Activate
If ActiveCell.Address = gZelle.Address Then Exit Sub
MsgBox ActiveCell.Address(False, False), vbOKCancel
Wend
End Sub


Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bei vbCancel Exit Sub
14.04.2008 19:08:58
Tino
Hallo,
hier mal ein Beispiel wie du es umsetzen musst.

Sub BeispielMSGBOX()
Dim Test As Integer
Test = MsgBox("Vesruch", vbOKCancel)
If Test = 2 Then MsgBox "Es wurde Abbruch gedrückt"
If Test = 1 Then MsgBox "Es wurde Ok gedrückt"
End Sub


Gruß
Tino

Anzeige
AW: Bei vbCancel Exit Sub
14.04.2008 19:11:12
ransi
HAllo Klaus
Du musst den Rückgabewert der MsgBox auswerten.
Machs so:
If MsgBox(gZelle.Address(False, False), vbOKCancel) = vbCancel Then Exit Sub

ransi

Anzeige
AW: Bei vbCancel Exit Sub
14.04.2008 19:33:51
Klaus
Hallo ransi,
diese Zeile hab ich gesucht - vielen Dank!
Und auch einen Dank an die anderen Helfer ...
Klaus

AW: Bei vbCancel Exit Sub
14.04.2008 19:13:59
Uwe
Hi,
immer sind die anderen schneller als ich (:-|. Ich gebe aber trotzdem mal meine Senf dazu:

Sub test()
Dim Antwort As Byte
Dim gZelle As Range
Set gZelle = Range("A2:A23")
Antwort = MsgBox(gZelle.Address(False, False), vbOKCancel)
If Antwort = 2 Then
MsgBox "Abbruch"
Exit Sub
End If
End Sub


Gruß
Uwe
(:o)

Anzeige
und hier für eine Inputbox
14.04.2008 19:26:48
Matthias
Hallo
Beispiel:

Option Explicit
Sub test()
Dim Frage As String
Frage = InputBox("Bitte wählen ...", "Eingabe ... ")
If Frage = "" Or IsEmpty(Frage) Then MsgBox "Abbruch oder keine Eingabe": Exit Sub
MsgBox "ok, es geht weiter"
End Sub


Userbild

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Abbruch bei vbCancel in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Makro erstellen: Öffne den VBA-Editor in Excel (Alt + F11) und erstelle ein neues Modul.

  2. Code hinzufügen: Füge den folgenden VBA-Code in das Modul ein:

    Sub Auswahl()
        Dim gZelle As Range, sBegriff$
        sBegriff = InputBox("Bitte Suchbegriff eingeben:", Application.UserName)
        If sBegriff = "" Then Exit Sub
        Set gZelle = ActiveSheet.Columns("A:H").Find(sBegriff)
        If gZelle Is Nothing Then
            Beep
            MsgBox "Suchbegriff nicht gefunden!", , Application.UserName
            Exit Sub
        End If
        gZelle.Select
        If MsgBox(gZelle.Address(False, False), vbOKCancel) = vbCancel Then Exit Sub
        gZelle.Offset(1).Select
        While ActiveCell.Address <> gZelle.Address
            Cells.FindNext(After:=ActiveCell).Activate
            If ActiveCell.Address = gZelle.Address Then Exit Sub
            If MsgBox(ActiveCell.Address(False, False), vbOKCancel) = vbCancel Then Exit Sub
        Wend
    End Sub
  3. Ausführen: Führe das Makro aus, indem du F5 drückst oder es über das Excel-Menü startest.

  4. Suchbegriff eingeben: Gib den Suchbegriff ein, wenn die Eingabeaufforderung erscheint.

  5. Abbruch: Wenn du im MsgBox den Abbruch (vbCancel) wählst, wird das Makro mit Exit Sub beendet.


Häufige Fehler und Lösungen

  • Fehler: Makro wird nicht beendet
    Lösung: Stelle sicher, dass der Rückgabewert der MsgBox korrekt ausgewertet wird. Verwende If MsgBox(...) = vbCancel Then Exit Sub.

  • Fehler: MsgBox zeigt nicht die richtige Adresse an
    Lösung: Überprüfe, ob die Variable gZelle korrekt gesetzt ist und tatsächlich eine Zelle enthält.


Alternative Methoden

  • Verwendung von InputBox: Du kannst auch die InputBox nutzen, um den Benutzer nach einem Suchbegriff zu fragen und dann mit If inputbox cancel then exit sub arbeiten, wenn keine Eingabe erfolgt.

    If Frage = "" Then Exit Sub
  • VBA MsgBox mit verschiedenen Optionen: Nutze vbAbort, vbRetry, oder vbIgnore, um verschiedene Abbruchmöglichkeiten zu bieten.


Praktische Beispiele

  1. Einfaches Beispiel für MsgBox:

    Sub BeispielMSGBOX()
        Dim Antwort As Integer
        Antwort = MsgBox("Möchten Sie fortfahren?", vbOKCancel)
        If Antwort = vbCancel Then Exit Sub
        MsgBox "Fortfahren ausgewählt!"
    End Sub
  2. InputBox mit Abbruch:

    Sub InputBoxBeispiel()
        Dim Antwort As String
        Antwort = InputBox("Bitte geben Sie etwas ein:")
        If Antwort = vbCancel Or Antwort = "" Then Exit Sub
        MsgBox "Eingabe: " & Antwort
    End Sub

Tipps für Profis

  • Fehlerbehandlung: Verwende On Error Resume Next, um die Fehlerbehandlung zu verbessern, insbesondere wenn du mit Benutzereingaben arbeitest.

  • Modularer Code: Halte deinen Code modular, indem du häufig verwendete Funktionen in separate Subs auslagerst.

  • Dokumentation: Kommentiere deinen Code gründlich, damit du und andere Benutzer in der Zukunft schnell verstehen, was der Code macht.


FAQ: Häufige Fragen

1. Wie kann ich mehrere MsgBoxen hintereinander verwenden?
Du kannst mehrere MsgBoxen in deinem Code verwenden und den Rückgabewert jeder MsgBox überprüfen, um zu entscheiden, ob das Makro fortfahren oder abgebrochen werden soll.

2. Was ist der Unterschied zwischen Exit Sub und End Sub?
Exit Sub beendet das aktuelle Sub und gibt die Kontrolle zurück, während End Sub den Code nur an der Stelle verlässt, an der es steht. Exit Sub ist also eine spezifische Anweisung zum Verlassen eines Subs.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige