Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Inputbox: Zahlenprüfung/ Abbruch zulassen

Betrifft: Inputbox: Zahlenprüfung/ Abbruch zulassen von: Andreas Hanisch
Geschrieben am: 13.02.2008 11:56:21

Hallo Herber Fans,

ich habe heute eine Inputbox in eines meiner Makros gebaut. Ein Beispiel mit Errorhandler, welches die Eingabe einer Zahl erzwingt, fand ich hier im Forum:

    Sub InputBoxA()
       Dim lValue As Long
       On Error GoTo ERRORHANDLER
       lValue = InputBox("Bitte eine Ganzzahl eingeben:")
       If lValue = False Then Exit Sub
          
       MsgBox lValue
       Exit Sub
    ERRORHANDLER:
       MsgBox "Nur Zahlen erlaubt!"
       Resume
    End Sub



Das Problem ist, das auch bei Drücken des "Abbrechen" Buttons der Errorhandler anspringt. Ich bekomme es in meinen Versuchen hin, daß ich entweder prüfen kann, ob es eine Zahl ist - wenn nicht, neuer Versuch oder aber das das Abbrechen gut funktioniert. Wenn der User auf abbrechen clickt, soll die Inputbox verschwinden. Aber beides in Kombination bekomme ich nicht hin.
Ich bin nun schon ein bißchen verwirrt, was Inputbox und application.inputbox so alles bewirken können und komme nicht weiter...

Wie schaffe ich die Kombination: Zahl größer 0 erzwingen, den Anwender aber auch rauslassen, wenn er Abbrechen klickt?

Vielen Dank für Eure Mühe.

Grüße, Andreas

  

Betrifft: AW: Inputbox: Zahlenprüfung/ Abbruch zulassen von: Hajo_Zi
Geschrieben am: 13.02.2008 12:36:20

Hallo Andreas,

nur Zahlen bekommt einfacher hin.
‚Inputbox mit Type 1 laesst nur Zahlen als Eingabe zu.
VarPrints = Application.InputBox("Anzahl der Ausdrucke", "Drucken", 0, Type:=1)

GrußformelHomepage


  

Betrifft: AW: Inputbox: Zahlenprüfung/ Abbruch zulassen von: Andreas Hanisch
Geschrieben am: 13.02.2008 12:50:07

Hallo Hajo,

das stimmt. Das gute liegt so nah... jetzt kann ich auch die Syntax in der VBA Hilfe besser deuten. Ich habe die Voreinstellung so geändert, daß eine "1" voreingestellt in der Inputbox erscheint. Aber einige Spaßvögel werden dort auch mal eine 0 eintragen. Wie kann ich das abfangen. Eine Schleife "Do until varPrints größer 0" brachte gerade nicht den gewünschten Erfolg.

Dank und Gruß,

Andreas


  

Betrifft: AW: Inputbox: Zahlenprüfung/ Abbruch zulassen von: Hajo_Zi
Geschrieben am: 13.02.2008 13:20:19

Hallo Andreas,

Sub Andreas()
    'Inputbox mit Type 1 laesst nur Zahlen als Eingabe zu.
    Dim VarPrints As Long
    Do
        VarPrints = Application.InputBox("Anzahl der Ausdrucke", "Drucken", 0, Type:=1)
    Loop While VarPrints = 0
    MsgBox "Test"
End Sub


Gruß Hajo


  

Betrifft: Du musst dazu aber auch den Defaultwert=1... von: Luc:-?
Geschrieben am: 13.02.2008 13:34:04

...wiederherstellen, Andreas!
Dazu ist es günstig, diesen als Konstante zu deklarieren:
Const DefPrints As Long = 1
Außerdem kannst du noch VarPrints als Static deklarieren:
Static VarPrints As Long
Dadurch bleibt der einmal eingegebene Wert erhalten bis die xlSitzung beendet oder ein neuer Wert eingegeben wird.
Im Pgm setzt du dann...
If VarPrints = 0 Then VarPrints = DefPrints
...bevor die InputBox aufgerufen wird...
VarPrints = InputBox("Anzahl der Ausdrucke", "Drucken", VarPrints, Type:=1)
Wenn du das dann in die Schleife stellst und dabei auch den Abbruch berücksichtigst, kann zwar 0 eingegeben wdn, es wird dann aber immer wieder der Defaultwert voreingestellt. Irgendwann wird's dem "Spaßvogel" dann sicher zuviel! ;-)
Den Defaultwert als Konstante zu vereinbaren hat den Vorteil, dass man, wenn man ihn ändern will, das nur an einer Stelle tun muss, die man außerdem auch noch schnell findet, da sie sich am PgmAnfang befindet. Das ist auch grundsätzlich bei allen analogen Fällen zu empfehlen.
Gruß Luc :-?


 

Beiträge aus den Excel-Beispielen zum Thema "Inputbox: Zahlenprüfung/ Abbruch zulassen"