Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
800to804
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
800to804
800to804
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zufallszahlen

Zufallszahlen
11.09.2006 08:44:07
Andreas
Hallo,
ich habe in den Zellen A1 bis A10 zehn Formeln stehen, die mir zehn Werte anzeigen. Nun würde ich gern mit VBA über einen Buttonklick eine MsgBox angezeigt bekommen wo in fünf untereinander liegenden Zeilen je 6 Zufallszahlen-Kombinationen aus den 10 Werten angezeigt werden.
Kann mir bitte jemand verraten, wie ich erstens die Zufallszahlen generiere und zweitens die mir in der MsgBox angezeigt bekomme?
Vielen Dank.
Andreas

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zufallszahlen
11.09.2006 10:44:19
Oberschlumpf
Hi Andreas
Versuch es mal so:
1. Trage im VBA-Editor in das Change-Ereignis der betroffenen Tabelle diesen Code ein

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
ZufWerte
End If
End Sub

die 1. und letzte Zeile stehen schon im VBA-Editor
2. Füge im VBA-Editor ein allgemeines Modul hinzu und trage diesen Code ein:

Sub ZufWerte()
Dim lardbWerte(10) As Double, ldbZuf As Double, lboZuf As Boolean, ldbZufall(5, 6) As Double, liZeile As Integer, liSpalte As Integer, liZaehler As Integer, lstrAnzeige As String, liSumme As Integer
For liZeile = 1 To 10
lardbWerte(liZeile) = ActiveSheet.Range("A" & liZeile).Value
Next
For liZeile = 1 To 5
For liSpalte = 1 To 6
Randomize
ldbZuf = Int((10 * Rnd) + 1)
For liZaehler = 1 To 6
If ldbZufall(liZeile, liZaehler) = lardbWerte(ldbZuf) Then
lboZuf = True
Exit For
End If
Next
If lboZuf = True Then
lboZuf = False
liSpalte = liSpalte - 1
Else
ldbZufall(liZeile, liSpalte) = lardbWerte(ldbZuf)
End If
liZaehler = 1
Next
For liSumme = 1 To 6
lstrAnzeige = lstrAnzeige & ldbZufall(liZeile, liSumme) & " "
Next
lstrAnzeige = lstrAnzeige & vbCr & vbLf
Next
MsgBox lstrAnzeige
End Sub

Dieser Code reagiert nur bei Wertänderung in den Zellen A1 - A10
Um diesen Code eines Buttons hinzuzufügen, musst du so vorgehen:
1. Lösche den ersetn Teil des Codes wieder (der Code aus dem Change-Ereignis)
2. Füge in das Klick-Ereignis des Buttons diese Zeile ein
ZufWerte
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: Zufallszahlen
11.09.2006 10:50:00
ingUR
Hallo, Andreas,
eine Zufallszahl in einem VBA-Priogramm wird durch den Befehl Rnd() erzeugt. Zuvor muß jedoch einmal im Geltungsbereich des Programms der Zufallsgenerator intalliert werden. Dieses erfolgt durch die Anweisung Randomize. Danach liefert die Anweisung Rnd() bei jedem Aufruf eine Zufallszahl r, mit 0 Sofern keine Wiederholungen der Auswahlzellen im 6er-Block auftreten soll, kann dieses Programm, das auf CommmandButton1_Click() abgearbeitet wird, Dir ddie gewünschte Angaben liefern. Sofern Wiederholungen der Zellenwahl zugelassen werden können, sind die Zeilen Do, Loop... DataPool... zu löschen; ebenso könnten die Befehle um DataPool... entfallen.

Option Explicit
Private Sub CommandButton1_Click()
Dim Data(10) As Integer, DataPool(10), rngC As Range
Dim strLine As String, msg As String
Dim r As Integer, n As Integer, idx As Integer
For Each rngC In Range("A1:A10")
Data(rngC.Row) = rngC.Value
Next
'Zufallsgenerator installieren
Randomize
For r = 1 To 5
For idx = 1 To 10
DataPool(idx) = 0
Next
strLine = ""
For n = 1 To 6
Do
'Zufallszahl 0 < random = Rnd() < 1
'durch Multiplikation und Ganzzahlbildung
'auf den Bereich 1 bis 10 transformieren.
idx = Int(10 * Rnd()) + 1
Loop Until DataPool(idx) = 0
DataPool(idx) = idx
strLine = strLine & " | " & Data(idx)
Next n
msg = msg & vbLf & strLine
Next r
MsgBox (msg)
End Sub 

Gruß,
Uwe
Anzeige
Danke
11.09.2006 11:06:16
Andreas
Ich danke Euch beiden. Das ist genau so, wie ich mir das vorgestellt habe.
Gruss
Andreas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige