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-Key: 111379

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

Printed on: April 20, 2024 at 04:04 o'clock

Member: SarekHL
SarekHL Mar 14, 2009 at 05:46:16 (UTC)
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 
Member: bastla
bastla Mar 14, 2009 at 10:43:42 (UTC)
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
Member: meonly
meonly Mar 16, 2009 at 15:39:05 (UTC)
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!