Zufallzahlen per VBA
22.10.2005 06:58:30
Erich
aus dem Forum habe ich einen Code, der Zufallzahlen ermittelt. Diesen habe ich insofern
angepasst, dass ich per Inputbox eingeben kann, bis zu welcher Zahl der Zufall
ermittelt werden soll. Der Zufall soll insgesamt 5x hintereinander ausgeführt werden.
Da ich eine Schleife nicht erstellen konnte, habe ich den Code 5x hintereinander
kopiert und jeweils die Startzelle angepasst. allerdings kommt die Fehlermeldung
Laufzeitfehler 9 bei der Zeile:
zuzahl(allezahlen) = allezahlen, wenn es in die 2. Runde geht; die erste Ziehungsrunde
funktioniert. Hier mein aktueller Code:
Sub Zufallzahleninput()
Randomize Timer
Dim Zahlmax As Integer
ReDim zuzahl(66) As String
Dim zahl(66) As Variant
Dim endeindex As Integer
Dim allezahlen As Integer
Dim ziehung As Integer
Dim gezogen As Integer
Dim zaehler1 As Integer
Zahlmax = InputBox("Bis zur Zahl")
endeindex = Zahlmax
'' 1. Ziehung
For allezahlen = 1 To Zahlmax
zuzahl(allezahlen) = allezahlen
Next allezahlen
For ziehung = 1 To Zahlmax
gezogen = Int(Rnd * endeindex) + 1
zahl(ziehung) = zuzahl(gezogen)
zuzahl(gezogen) = zuzahl(endeindex)
endeindex = endeindex - 1
ReDim Preserve zuzahl(endeindex)
zaehler1 = zaehler1 + 1
Cells(1, zaehler1) = zahl(ziehung)
Next ziehung
'' 2. Ziehung
For allezahlen = 1 To Zahlmax
zuzahl(allezahlen) = allezahlen
Next allezahlen
For ziehung = 1 To Zahlmax
gezogen = Int(Rnd * endeindex) + 1
zahl(ziehung) = zuzahl(gezogen)
zuzahl(gezogen) = zuzahl(endeindex)
endeindex = endeindex - 1
ReDim Preserve zuzahl(endeindex)
zaehler1 = zaehler1 + 1
Cells(2, zaehler1) = zahl(ziehung)
Next ziehung
'' 3. Ziehung
For allezahlen = 1 To Zahlmax
zuzahl(allezahlen) = allezahlen
Next allezahlen
For ziehung = 1 To Zahlmax
gezogen = Int(Rnd * endeindex) + 1
zahl(ziehung) = zuzahl(gezogen)
zuzahl(gezogen) = zuzahl(endeindex)
endeindex = endeindex - 1
ReDim Preserve zuzahl(endeindex)
zaehler1 = zaehler1 + 1
Cells(3, zaehler1) = zahl(ziehung)
Next ziehung
'' 4. Ziehung
For allezahlen = 1 To Zahlmax
zuzahl(allezahlen) = allezahlen
Next allezahlen
For ziehung = 1 To Zahlmax
gezogen = Int(Rnd * endeindex) + 1
zahl(ziehung) = zuzahl(gezogen)
zuzahl(gezogen) = zuzahl(endeindex)
endeindex = endeindex - 1
ReDim Preserve zuzahl(endeindex)
zaehler1 = zaehler1 + 1
Cells(4, zaehler1) = zahl(ziehung)
Next ziehung
'' 5. Ziehung
For allezahlen = 1 To Zahlmax
zuzahl(allezahlen) = allezahlen
Next allezahlen
For ziehung = 1 To Zahlmax
gezogen = Int(Rnd * endeindex) + 1
zahl(ziehung) = zuzahl(gezogen)
zuzahl(gezogen) = zuzahl(endeindex)
endeindex = endeindex - 1
ReDim Preserve zuzahl(endeindex)
zaehler1 = zaehler1 + 1
Cells(5, zaehler1) = zahl(ziehung)
Next ziehung
End Sub
Besten Dank für eine Hilfe!
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
Private Tippgemeinschaft für Lotto oder KENO: http://www.kenostrategen.de