Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Rückgabewert einer InputBox

Frage Entwicklung Visual Studio

Mitglied: MarcoBorn

MarcoBorn (Level 1) - Jetzt verbinden

05.08.2013 um 15:32 Uhr, 2002 Aufrufe, 7 Kommentare, 1 Danke

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
Mitglied: SlainteMhath
05.08.2013 um 15:44 Uhr
Moin,

zur Prüfung ob ein Integer in der InputBox eingegeben wurde solltest Du eine eigenen Funktion verwenden.
Etwa so:
01.
    Public Function IsInteger(ByVal value As String) As Boolean 
02.
        If String.IsNullOrEmpty(value) Then 
03.
            Return False 
04.
        Else 
05.
            Return Integer.TryParse(value, Nothing) 
06.
        End If 
07.
    End Function
und dann entsprechend anstatt deinen IsError(... eben IsInteger(... verwenden.

lg,
Slainte
Bitte warten ..
Mitglied: Snowman25
05.08.2013, aktualisiert um 15:51 Uhr
Hallo MarcoBorn,

benutz in Zukunft bitte das code-Tag.

01.
Eingabe = 0 
02.
Do until Eingabe = 1 
03.
	Rückgabe = InputBox("Wieviel Level sollen in der UfAB-Tabelle angezeigt werden (1-5)?", "Rückfrage") 
04.
		If Not IsError(CInt(Rückgabe)) Then 
05.
			If CInt(Rückgabe) < 6 And CInt(Rückgabe) > 0 Then 
06.
				'korrekte Eingabe 
07.
				Eingabe = 1 
08.
				Else 
09.
				MsgBox ("Bitte nur Ganzzahlen von 1 bis 5 eingeben.") 
10.
			End If 
11.
		Else 
12.
			MsgBox ("Bitte nur Ganzzahlen von 1 bis 5 eingeben.") 
13.
		End If 
14.
	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:
01.
If (CInt(Rückgabe) < 6) And (CInt(Rückgabe) > 0) Then
Gruß,
Snowman25
Bitte warten ..
Mitglied: MarcoBorn
05.08.2013 um 15:56 Uhr
Hallo Slainte,
Deine Funktion läuft wunderbar.

Vielen Dank,
M. Born
Bitte warten ..
Mitglied: SlainteMhath
05.08.2013, aktualisiert um 15:59 Uhr
@Snowman25
Warum packst du Rückgabe nicht gleich in einen INT?
Wegen dem "IsNullOrEmpty"

@MarcoBorn
Deine Funktion läuft wunderbar.
Freud mich
Bitte warten ..
Mitglied: MarcoBorn
05.08.2013 um 16:03 Uhr
Hallo Snowman,
danke für Deine Tipps. Ich bin noch zienlicher .NET-Neuling, daher wusste ich das mit dem Einklammern nicht. Eine While-Schleife hatte ich auch erst probiert, die hat aber nicht richtig funktioniert.

Wenn ich Rückgabe=Int(Inputbox...) schreibe, bricht dann der Compiler nicht mit einer Fehlermeldung ab, wenn etwas anderes als ein Integer eingegeben wurde?

Wie verwende ich das Code-Tag? Wie bei HTML, also mit <>, oder mit anderen Zeichen?

Vielen Dank im voraus,
M. Born
Bitte warten ..
Mitglied: Snowman25
05.08.2013 um 16:30 Uhr
Ja, mit <>.
Siehe auch: Formatierungen in den Beiträgen
Bitte warten ..
Mitglied: MarcoBorn
06.08.2013 um 08:03 Uhr
Danke. Die Seite kannte ich noch nicht.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...