Inputbox in VBA: Abbrechen korrekt handhaben
Schritt-für-Schritt-Anleitung
Um zu verhindern, dass Dein Makro nach dem Drücken der "Abbrechen"-Schaltfläche in einer Inputbox weiterläuft, kannst Du die StrPtr
-Funktion in VBA verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:
-
Erstelle ein neues Modul oder öffne ein bestehendes Modul in Deinem VBA-Editor.
-
Füge den folgenden Code ein:
Private Sub Mail_versenden()
Dim intwahl As Integer
Dim wert As String
Application.ScreenUpdating = False
If Range("p1") <> "OK" Then
MsgBox "Abfragedatum ist nicht aktuell!"
Exit Sub
End If
intwahl = MsgBox("Wollen Sie die Mail versenden?", vbYesNo + vbQuestion, "Rückfrage")
If intwahl = vbYes Then
wert = InputBox("Bitte ggf. zusätzlichen Text eingeben", "Zusatztext", "")
' Wenn Abbrechen gedrückt, dann Exit
If StrPtr(wert) = 0 Then Exit Sub
' Hier kommt das eigentliche Makro
Range("a1").Select
ActiveWorkbook.Save
End If
Application.ScreenUpdating = True
End Sub
-
Teste das Makro und achte darauf, dass es beim Drücken der "Abbrechen"-Schaltfläche in der Inputbox korrekt beendet wird.
Häufige Fehler und Lösungen
-
Das Makro läuft trotz Abbrechen weiter: Stelle sicher, dass Du die StrPtr
-Funktion korrekt verwendest, um auf die Rückgabe der Inputbox zu prüfen. Wenn StrPtr(wert) = 0
ist, bedeutet dies, dass "Abbrechen" gedrückt wurde.
-
Falsche Bedingungen in If-Anweisungen: Überprüfe, ob die Bedingungen in Deinen If-Anweisungen korrekt sind. Achte darauf, den richtigen Vergleichsoperator zu verwenden.
Alternative Methoden
Falls Du die StrPtr
-Funktion nicht verwenden möchtest, kannst Du auch eine einfache Überprüfung der Rückgabe der Inputbox nutzen:
wert = InputBox("Bitte ggf. zusätzlichen Text eingeben", "Zusatztext", "")
If wert = "" Then Exit Sub
Diese Methode funktioniert, solange Du auch den Fall berücksichtigst, dass ein leerer String zurückgegeben werden kann.
Praktische Beispiele
Hier ist ein Beispiel, wie Du die Inputbox in einem realen Szenario verwenden könntest:
Sub Beispiel_Mail_Versenden()
Dim wert As String
wert = InputBox("Bitte gib Deine Nachricht ein:", "Nachricht")
If StrPtr(wert) = 0 Then
MsgBox "Das Makro wurde abgebrochen.", vbInformation
Exit Sub
End If
MsgBox "Deine Nachricht: " & wert
End Sub
In diesem Beispiel wird dem Benutzer eine Nachricht angezeigt, die bestätigt, dass das Makro abgebrochen wurde, wenn die "Abbrechen"-Schaltfläche gedrückt wurde.
Tipps für Profis
-
Verwende Application.InputBox
: Diese Methode erlaubt die Eingabe spezifischer Datentypen und erhöht die Validierung der Eingaben. Die Syntax ist ähnlich, jedoch kannst Du angeben, welchen Typ von Eingabe Du erwartest.
-
Erstelle benutzerdefinierte Dialogfelder: Für komplexere Anforderungen kannst Du UserForms in VBA erstellen, die flexibler sind und mehr Optionen bieten als eine einfache Inputbox.
FAQ: Häufige Fragen
1. Wie kann ich die Inputbox mit vordefinierten Werten füllen?
Du kannst den dritten Parameter der Inputbox verwenden, um einen Standardwert anzugeben, der automatisch angezeigt wird.
2. Was ist der Unterschied zwischen InputBox
und Application.InputBox
?
InputBox
gibt immer einen String zurück, während Application.InputBox
auch andere Datentypen wie Zahlen oder Bereiche zurückgeben kann, je nach den angegebenen Parametern.