meonly
Goto Top

VBS - Simple Schleifen

Hallo,

irgendwie verstehe ich nicht so ganz, warum nachfolgender VBS-Code nicht funktioniert?

Wert1 = 10
Wert2 = 20

Do While Wert2 > Wert1
   Wert2 = InputBox("Eingabe < " & Wert1,"Titel")  
Loop

MsgBox "Neuer Wert2: " & Wert2  

Die Schleife ist eine Endloschleife ... aber warum?
Danke vorab für eure Unterstützung.

Content-ID: 111379

Url: https://administrator.de/contentid/111379

Ausgedruckt am: 23.11.2024 um 08:11 Uhr

SarekHL
SarekHL 14.03.2009 um 06:46:16 Uhr
Goto Top
Als ich das gerade nachgestellt habe, habe ich festgestellt, daß der Wert aus der InputBox als String erfaßt wird. Wert2 hat also nach der Eingabe einen String gespeichert, der sich so nicht mit Wert1 vergleichen läßt.

Versuch mal, die Zeile 05 Deines Codes wie folgt zu ergänzen:
Wert2 = Val(InputBox("Eingabe < " & Wert1,"Titel"))  

Alternativ könntest Du am Anfang Deines Code die Variable Wert2 als Zahlenvariable dimensionieren:
Dim Wert2 As Integer 
bastla
bastla 14.03.2009 um 11:43:42 Uhr
Goto Top
@SarekHL
Da VBS: Keine Typdeklaration möglich, daher nur zB CInt() oder CDbl (die Funktion Val() gibt's nämlich auch nicht) - und zur Sicherheit noch ein IsNumeric() vorweg ...

Kleine Besonderheit am Rande: Ein Punkt wird bei der Konvertierung einfach ignoriert (aus 1.5 wird 15; Ausnahme: der Punkt steht am Anfang - dann "nicht numerisch") - daher zB zunächst noch Replace() verwenden - insgesamt dann etwa so:
Wert1 = 10
Wert2 = 20

Do While Wert2 > Wert1
    Ein = InputBox("Eingabe < " & Wert1,"Titel")  
    If Isnumeric(Ein) Then
        Wert2 = CDbl(Replace(Ein, ".", ","))  
    End If
Loop

MsgBox "Neuer Wert2: " & Wert2  
Grüße
bastla
meonly
meonly 16.03.2009 um 16:39:05 Uhr
Goto Top
Hallo,

das der Wert als String erfasst wird, habe ich irgendwie verpasst.

Besten Danke an alle, genau das war es.
Jetzt funktionierts.


Danke nochmal!