Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Inputbox - abbrechen drücken

Inputbox - abbrechen drücken
12.06.2009 22:47:45
Markus
Hallo Leute,
kriege es irgendwie nicht gebacken. Im Archiv habe ich zwar viele Beiträge gesehen, ich kann sie aber nicht auf meine Inputbox anwenden. Liegt wohl an der UHrzeit oder eher an meinem VBA-Level.
Ich möchte gerne in mein Makro einbauen, dass bei "abbrechen" in der Inputbox das Makro auch gezielt abbricht.

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
Else
End If
intwahl = MsgBox("Wollen Sie die Mail versenden?", _
vbYesNo + vbQuestion, "Rückfrage")
If intwahl = 6 Then
wert = InputBox("bitte ggf. zustätzlichen Text eingeben", "Zusatztext", "")
'WENN ABBRECHEN GEDRÜCKT, DANN EXIT
ansonsten kommt das eigentliche Makro
Range("a1").Select
ActiveWorkbook.Save
End If
Application.ScreenUpdating = False
End Sub


Wer kann mir helfen? Danke!
Gruß
Markus

Anzeige

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

Betreff
Datum
Anwender
Anzeige
If wert = "" Then Exit Sub oT
12.06.2009 22:58:28
Matthias
AW: Inputbox - abbrechen drücken
13.06.2009 09:43:39
Nepumuk
Hallo Markus,
so:
wert = InputBox("bitte ggf. zustätzlichen Text eingeben", "Zusatztext", "")
If StrPtr(wert) = 0 Then Exit Sub

Gruß
Nepumuk
Anzeige
AW: Inputbox - abbrechen drücken
13.06.2009 10:37:56
Hajo_Zi
Hallo Nepumuk,
kannst Du mal was schreiben zu StrPtr, die Hilfe hat dazu nichts?

Danke für Eure Hilfe!
13.06.2009 11:20:59
Markus
AW: StrPtr Erklärung
13.06.2009 11:30:22
Hajo_Zi
Hallo Nepumuk,
ich habe mal Google bemüht

Für optionale String-Parameter gibt es allerdings eine Hintertür, durch die Sie zu einer tatsä _
chlichen Prüfung des uninitialisierten Werts gelangen: die undokumentierte Visual Basic-Funktion StrPtr.
Die Funktion StrPtr liefert den Wert des Zeigers (das ist, vereinfacht gesagt, die  _
Speicheradresse des Strings) zu einem String. Und bei einem uninitialisierten String ist dieser Wert schlicht 0, da ein
uninitialisierter String für VB noch nicht existiert. Prüfen Sie also mit dieser Funktion den ü _
bergebenen optionalen String-Parameter.


Gruß Hajo

Anzeige
AW: StrPtr Erklärung
13.06.2009 19:49:23
Gerd
Hallo Hajo,
zu diesem Thema noch:
Aus vb-fun Tipp 0197 :
Die InputBox zeigt eine Eingabeaufforderung in einem Dialogfeld an, wartet auf die Eingabe eines Textes oder die Auswahl einer Schaltfläche und gibt den Inhalt des Textfeldes zurück.
Wenn im Textfeld der InputBox nun keine Eingabe gemacht wurde, wird sowohl bei 'OK' als auch bei 'Abbrechen' eine sogenannte "Null-Zeichenfolge" zurückgegeben.
Mit Hilfe der nicht dokumentierten StrPtr-Funktion lässt sich feststellen, ob es sich bei der Rückgabe tatsächlich um einen "Null-String" handelt - per Definition ist ein "Null-String" (vbNullString) ein Zeiger, dessen Wert 0 ist. Somit ist der Rückgabewert eindeutig auswertbar. Ist das Ergebnis = 0, wurde die Schaltfläche 'Abbrechen' gewählt, bei 'OK' wird "" zurückgegeben!
Gruß Gerd
Anzeige
AW: StrPtr Erklärung
13.06.2009 19:53:45
Hajo_Zi
Hallo Gerd,
Danke für die Information, habe ich gleich bei meiner Hilfedatei ergänzt.
Gruß Hajo
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

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:

  1. Erstelle ein neues Modul oder öffne ein bestehendes Modul in Deinem VBA-Editor.

  2. 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
  3. 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.

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