VBS: Unbound und Typenkonflikt

Adrjan

Active Member
#1
Hallo zusammen,

ich habe folgendes kleines Skript für einen Zufallsgenerator:
Code:
Dim iMin, iMax, i, iZahl

iMin = 1
iMax = 3

For i = 0 To UBound(a)
Randomize
iZahl = Int((iMax - iMin + 1) * Rnd + iMin)
a(i)=iZahl
Next
strNummer = "Nummer: " &izahl
Leider erhalte ich beim Ausführen immer die Fehlermeldung "Typenkonflikt: 'UBound".

Kann mir jemand helfen?
Vielen Dank!

Viele Grüße
Adrjan
 

BAGZZlash

Well-Known Member
#4
Na, ich weiß ja nicht, wie viele Elemente Dein Array haben soll, das weißt nur Du. Wozu brauchst Du es überhaupt, in Deinem Code-Ausschnitt wird es jedenfalls nicht weiter verwendet. Welchen Typ sollen die Elemente des Arrays haben?

Prinzipiell mal so, allerdings ist das VB, und nicht VBS. Ob das in VBS so klappt, weiß ich also nicht.

Code:
Dim a(0 To 10) As Long
 

German

Well-Known Member
c-b Experte
#5
@BAGZZlash Eine Deklaration als Typ gibt es bei VBS nicht (alles ist vom Typ Variant, der Subtyp wird implizit zur Laufzeit bestimmt).

Code:
Option Explicit
Dim i, a(9) ' für 10 Arrayelemente mit Indizes 0...9
Const iMin = 1, iMax = 3

Randomize

For i = 0 To UBound(a)
  a(i) = Int((iMax - iMin + 1) * Rnd + iMin)
Next

WScript.Echo "Nummern:" & vbNewLine & Join(a, vbNewLine)
"Randomize" wird einmalig aufgerufen (nicht mehrfach in der Schleife). Das "Option Explizit" sorgt dafür, dass du bei nicht deklarierten Variablen auch gleich eine entsprechende Fehlermeldung bekommst.
 
Oben