Hallo,
Ich lege 6 zufalls Zahlen in eine Listbox mit
listbox.items.add das geht auch alles gut. Nur dann will ich
die Zahlen per Knopfdruck in sortieren. Dafür will ich sie in
ein Array legen. Hab im Internet schon überall geguckt und
rumprobiert und iwi krieg ichs nicht hin.
nur zum besseren Verständnis.
Du erzeugst 6 Zufallszahlen, schreibst die erst in eine Liste, dann möchtest Du die in ein Array übertragen, dort sortieren und sortiert wieder in die Liste zurück schreiben?
Das ist kein Problem, aber warum?
Du kannst entweder die erzeugten Zahlen gleich in ein Array schreiben, dort sortieren und dann in der Liste anzeigen oder noch einfacher …
Du stellst die Eigenschaft ‚Sorted‘ der Liste auf ‚True‘ und VB zeigt die die Liste sortiert an. Du musst nur führende Nullen mit schreiben. Wenn Deine höchste Zahl also 49 ist, müssen die Zahlen von 1 bis 9 eine Null davor bekommen … 01, 02, … 09, 10 …
Option Explicit
Private Sub Command1\_Click()
Dim r As Integer, i As Integer
For i = 1 To 6
r = Int(Rnd(1) \* 49) + 1
List1.AddItem Right("0" & CStr(r), 2)
Next
End Sub
Sollte es dabei um Lotto gehen … So kommst Du nicht zum Ziel.
Du bekommst dauernd Zahlen doppelt.
Das löst man, indem man wirklich ‚zieht‘, also ein Array mir 49 Feldern mit den Zahlen von 1 bis 49 füllt, das Array ‚mischt‘ und dann sechs Felder aus diesem Array ‚zieht‘. Beim ziehen genügt es, sechs aufeianderfolgende Felder aus dem Array zu lesen, am Zufallsergebnis ändert das grundsätzlich nichts.
Mischen und ziehen:
Option Explicit
Dim Kugel(1 To 49) As Integer
Private Sub Command1\_Click()
Dim i As Integer, r As Integer, m As Integer
Randomize Timer
List1.Clear
For i = 1 To 49
Kugel(i) = i
Next
For i = 49 To 1 Step -1
r = Int(Rnd(1) \* i) + 1
m = Kugel(i)
Kugel(i) = Kugel(r)
Kugel(r) = m
Next
For i = 1 To 6
List1.AddItem Right("0" & CStr(Kugel(i)), 2)
Next
End Sub
Gruß Rainer