Rückgabewert einer InputBox
Hallo Forum,
ich möchte über eine InputBox vom Nutzer eine Integer-Zahl von 1 bis 5 abfragen. Wird ein anderer Wert eingegeben, soll die Abfrage wiederholt werden. Hierfür nutze ich folgenden Code (die Dim's habe ich weggelassen):
Eingabe = 0
Do until Eingabe = 1
Rückgabe = InputBox("Wieviel Level sollen in der UfAB-Tabelle angezeigt werden (1-5)?", "Rückfrage")
If Not IsError(CInt(Rückgabe)) Then
If CInt(Rückgabe) < 6 And CInt(Rückgabe) > 0 Then
'korrekte Eingabe
Eingabe = 1
Else
MsgBox ("Bitte nur Ganzzahlen von 1 bis 5 eingeben.")
End If
Else
MsgBox ("Bitte nur Ganzzahlen von 1 bis 5 eingeben.")
End If
Loop
Mit Hilfe der Variablen "Eingabe" will ich testen, ob ein korrekter Wert eingegeben wurde, und die Schleife soll solange durchlaufen werden, bis dies geschehen ist. Da die InputBox als Rückgabe einen String liefert, prüfe ich zuerst mit IsError, ob der String einen Integer-Wert enthält. Aber genau bei dieser Prüfung bricht das Makro ab und ich lande im Catch-Zweig der Exceptio-Behandlung.
Was mache ich hier verkehrt? Gibt es eventuell eine bessere Möglichkeit, die Abfrage zu realisieren?
Vielen Dank im voraus,
M. Born
ich möchte über eine InputBox vom Nutzer eine Integer-Zahl von 1 bis 5 abfragen. Wird ein anderer Wert eingegeben, soll die Abfrage wiederholt werden. Hierfür nutze ich folgenden Code (die Dim's habe ich weggelassen):
Eingabe = 0
Do until Eingabe = 1
Rückgabe = InputBox("Wieviel Level sollen in der UfAB-Tabelle angezeigt werden (1-5)?", "Rückfrage")
If Not IsError(CInt(Rückgabe)) Then
If CInt(Rückgabe) < 6 And CInt(Rückgabe) > 0 Then
'korrekte Eingabe
Eingabe = 1
Else
MsgBox ("Bitte nur Ganzzahlen von 1 bis 5 eingeben.")
End If
Else
MsgBox ("Bitte nur Ganzzahlen von 1 bis 5 eingeben.")
End If
Loop
Mit Hilfe der Variablen "Eingabe" will ich testen, ob ein korrekter Wert eingegeben wurde, und die Schleife soll solange durchlaufen werden, bis dies geschehen ist. Da die InputBox als Rückgabe einen String liefert, prüfe ich zuerst mit IsError, ob der String einen Integer-Wert enthält. Aber genau bei dieser Prüfung bricht das Makro ab und ich lande im Catch-Zweig der Exceptio-Behandlung.
Was mache ich hier verkehrt? Gibt es eventuell eine bessere Möglichkeit, die Abfrage zu realisieren?
Vielen Dank im voraus,
M. Born
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 213395
Url: https://administrator.de/forum/rueckgabewert-einer-inputbox-213395.html
Ausgedruckt am: 10.04.2025 um 12:04 Uhr
7 Kommentare
Neuester Kommentar
Moin,
zur Prüfung ob ein Integer in der InputBox eingegeben wurde solltest Du eine eigenen Funktion verwenden.
Etwa so:
und dann entsprechend anstatt deinen IsError(... eben IsInteger(... verwenden.
lg,
Slainte
zur Prüfung ob ein Integer in der InputBox eingegeben wurde solltest Du eine eigenen Funktion verwenden.
Etwa so:
1
2
3
4
5
6
7
2
3
4
5
6
7
Public Function IsInteger(ByVal value As String) As Boolean
If String.IsNullOrEmpty(value) Then
Return False
Else
Return Integer.TryParse(value, Nothing)
End If
End Function
und dann entsprechend anstatt deinen IsError(... eben IsInteger(... verwenden.
lg,
Slainte
Hallo @MarcoBorn,
benutz in Zukunft bitte das
Die Schleife würde ich andersherum schreiben. Vielleicht auch einfach nur eine
Warum packst du Rückgabe nicht gleich in einen INT? Dann musst du nicht jedesmal in einen Integer casten.
Ausserdem solltest du deinen IF-Statements einklammern. Dann ist es leicher lesbar und der Compiler kommt auch besser damit klar:
Gruß,
@Snowman25
benutz in Zukunft bitte das
code
-Tag.1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
Eingabe = 0
Do until Eingabe = 1
Rückgabe = InputBox("Wieviel Level sollen in der UfAB-Tabelle angezeigt werden (1-5)?", "Rückfrage")
If Not IsError(CInt(Rückgabe)) Then
If CInt(Rückgabe) < 6 And CInt(Rückgabe) > 0 Then
'korrekte Eingabe
Eingabe = 1
Else
MsgBox ("Bitte nur Ganzzahlen von 1 bis 5 eingeben.")
End If
Else
MsgBox ("Bitte nur Ganzzahlen von 1 bis 5 eingeben.")
End If
Loop
Die Schleife würde ich andersherum schreiben. Vielleicht auch einfach nur eine
while(true)
-Schleife mit break
sobald keine Fehler vorhanden sind.Warum packst du Rückgabe nicht gleich in einen INT? Dann musst du nicht jedesmal in einen Integer casten.
Ausserdem solltest du deinen IF-Statements einklammern. Dann ist es leicher lesbar und der Compiler kommt auch besser damit klar:
1
If (CInt(Rückgabe) < 6) And (CInt(Rückgabe) > 0) Then
Gruß,
@Snowman25
@Snowman25

@MarcoBorn

Warum packst du Rückgabe nicht gleich in einen INT?
Wegen dem "IsNullOrEmpty" @MarcoBorn
Deine Funktion läuft wunderbar.
Freud mich
Ja, mit <>.
Siehe auch: Formatierungen in den Beiträgen
Siehe auch: Formatierungen in den Beiträgen