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

Forumthread: Application.Inputbox - Abbruch

Application.Inputbox - Abbruch
Ralf_P
Hallo,
ich krame jetzt schon ewig im Archiv herum, aber ich komme nicht weiter.
Private Sub CommandButton1_Click()
Dim Auswahl As Variant
Dim Formel As String
Me.Hide
Set Auswahl = Application.InputBox("Wählen Sie den zu summierenden Bereich.", , , , , , , 8)
If Auswahl Is Nothing Then Exit Sub '

Was mache ich denn falsch, um bei Abbruch ohne Fehler auszusteigen?
Gruß, Ralf
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Application.Inputbox - Abbruch
21.05.2010 12:27:33
Hajo_Zi
Halo Ralf,
Inputbox Abbrechen
wert = InputBox("bitte ggf. zustätzlichen Text eingeben", "Zusatztext", "")
If StrPtr(wert) = 0 Then Exit Sub
Von Nepumuk
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.
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!
Von Gerd

Anzeige
AW: Application.Inputbox - Abbruch
21.05.2010 12:48:51
Ralf_P
Hallo Hajo,
vielen Dank für den Tip, aber es läuft immer noch nicht:
Private Sub CommandButton1_Click()
Dim Auswahl As Variant
Dim Formel As String
Me.Hide
Set Auswahl = Application.InputBox("Wählen Sie den zu summierenden Bereich.", , , , , , , 8)
If StrPtr(Auswahl) = 0 Then Exit Sub
Formel = "= Farbsumme(" & Auswahl.Address & ", " & Farbe & ")"
ActiveCell.Formula = Formel
End Sub
Ursprünglich hatte ich
Dim Auswahl As Range --> weil Inputbox = Type 8
Diese gibt aber bei Abbruch False zurück, deshalb
Dim Auswahl As Variant
um beide Möglichkeiten abzufragen. Leider klappt keine der Varianten.
Gruß, Ralf
Anzeige
AW: Application.Inputbox - Abbruch
21.05.2010 23:37:52
Steffen
Hallo Ralf,
Ich würds mit der "Hammermethode" vlt lösen:
Sub test()
Dim Auswahl As Variant
Dim Formel As String
Application.DisplayAlerts = False
Me.Hide
On Error GoTo ENDE
Set Auswahl = Application.InputBox("Wählen Sie den zu summierenden Bereich.", , , , , , , 8)
Formel = "= Farbsumme(" & Auswahl.Address & ", " & Farbe & ")"
ActiveCell.Formula = Formel
ENDE:
Application.DisplayAlerts = True
End Sub

Viele Grüße
Steffen
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Umgang mit Application.InputBox in Excel VBA: Abbruch erkennen und Fehler vermeiden


Schritt-für-Schritt-Anleitung

Um die Application.InputBox in Excel VBA korrekt zu verwenden und den Abbruch der Eingabe zu erkennen, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11.

  2. Füge einen neuen Modul ein: Rechtsklick im Projektfenster, dann Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Private Sub CommandButton1_Click()
       Dim Auswahl As Variant
       Dim Formel As String
       Me.Hide
       Set Auswahl = Application.InputBox("Wählen Sie den zu summierenden Bereich.", , , , , , , 8)
       If Auswahl Is Nothing Then Exit Sub
       Formel = "= Farbsumme(" & Auswahl.Address & ", " & Farbe & ")"
       ActiveCell.Formula = Formel
    End Sub
  4. Testen des Codes: Klicke auf den Button, um sicherzustellen, dass der Code funktioniert. Wenn du "Abbrechen" wählst, sollte der Code ohne Fehler aussteigen.


Häufige Fehler und Lösungen

  • Fehler: Application.InputBox gibt False zurück, wenn "Abbrechen" gedrückt wird.

    • Lösung: Verwende If Auswahl Is Nothing Then Exit Sub anstelle von If Auswahl = False Then Exit Sub.
  • Fehler: Der Code stürzt ab, wenn keine gültige Auswahl getroffen wird.

    • Lösung: Setze On Error Resume Next und verwende eine Fehlerbehandlungsroutine.

Alternative Methoden

Wenn du die Eingabeüberprüfung bei der Verwendung der InputBox verbessern möchtest, kannst du auch die StrPtr-Funktion nutzen, um zu überprüfen, ob die Eingabe abgebrochen wurde:

If StrPtr(Auswahl) = 0 Then Exit Sub

Diese Methode ist besonders nützlich, wenn du mit optionalen String-Parametern arbeitest und den Status des eingegebenen Wertes genau prüfen möchtest.


Praktische Beispiele

Hier ist ein Beispiel, wie du die Application.InputBox mit Typ 8 (Bereich) verwenden kannst, um den Bereich auszuwählen und dabei sicherzustellen, dass ein Abbruch korrekt behandelt wird:

Sub Beispiel()
    Dim Auswahl As Range
    On Error Resume Next
    Set Auswahl = Application.InputBox("Wählen Sie den zu summierenden Bereich.", Type:=8)
    If Auswahl Is Nothing Then
        MsgBox "Eingabe abgebrochen."
        Exit Sub
    End If
    MsgBox "Der gewählte Bereich ist: " & Auswahl.Address
End Sub

In diesem Beispiel wird der Benutzer gewarnt, wenn die Eingabe abgebrochen wird, und die Adresse des gewählten Bereichs wird angezeigt, wenn die Auswahl gültig ist.


Tipps für Profis

  • Nutze die Application.InputBox anstelle der Standard-InputBox, wenn du mit Datentypen arbeitest, wie z.B. Bereichen (Type 8).
  • Verwende Application.DisplayAlerts = False, um unerwünschte Warnmeldungen während der Ausführung zu unterdrücken, aber erinnere dich, sie am Ende deines Codes wieder zu aktivieren.
  • Implementiere eine umfassende Fehlerbehandlung, um unerwartete Situationen professionell zu handhaben.

FAQ: Häufige Fragen

1. Wie kann ich die InputBox abbrechen? Um die InputBox abzubrechen, kannst du einfach auf "Abbrechen" klicken. Der Rückgabewert wird Nothing sein, wenn du die Application.InputBox mit Type 8 verwendest.

2. Was ist der Unterschied zwischen InputBox und Application.InputBox? Die Application.InputBox bietet zusätzliche Optionen, wie die Möglichkeit, einen bestimmten Datentyp zu erwarten, während die Standard-InputBox nur Text zurückgibt.

3. Wie kann ich sicherstellen, dass die Eingabe gültig ist? Verwende eine Kombination aus Fehlerbehandlung und Typüberprüfung. Nutze z.B. If Not Auswahl Is Nothing Then und prüfe den Typ von Auswahl, um sicherzustellen, dass es sich um einen gültigen Bereich handelt.

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