AW: VBA Zufallsspiel
07.05.2007 18:22:00
Erich
Hallo Peter,
anders konzipieren müsstest du nicht. Es würde ausreichen, dass bei "Ende=1" der 2. Spieler nicht mehr drankommt.
Dafür reichte ein "If Ende = 0 then" und "End If" um die Zeilen für den zweiten Spieler.
Ich habe "Ende" mal durch eine Boolean-Variable "bolWeiter" ersetzt:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zeile, Spalte, Zeile2, Spalte2, Obergrenze, Untergrenze
Dim Punkte1, Punkte2, Schleife As Long, bolWeiter As Boolean
If Intersect(Target, Range("D9:D9")) Is Nothing Then Exit Sub
Application.EnableEvents = False ' sonst wird diese Prozedur ständig aufgerufen
Cells(9, 17) = "" ' Q9
Cells(9, 24) = "" ' X9
Randomize
Do While Schleife = 64 Then
Punkte1 = Punkte1 - Cells(Zeile, Spalte)
End If
Zeile = Zeile + 1
Cells(3, Punkte1) = "o"
If bolWeiter Then
Application.Wait Now + TimeValue("00:00:01")
Cells(Zeile2, Spalte2) = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
Punkte2 = Punkte2 + Cells(Zeile2, Spalte2)
If Punkte2 = 63 Then
Cells(9, 24) = Cells(9, 24) + 1
bolWeiter = False
ElseIf Punkte2 >= 64 Then
Punkte2 = Punkte2 - Cells(Zeile2, Spalte2)
End If
Zeile2 = Zeile2 + 1
Cells(4, Punkte2) = "o"
If bolWeiter Then Application.Wait Now + TimeValue("00:00:01")
End If
Loop
Schleife = Schleife + 1
If bolWeiter Then Application.Wait Now + TimeValue("00:00:02")
Loop
Application.EnableEvents = True
End Sub
Allerdings: Bei dieser Regel ist Spieler 1 im Vorteil.
Ist das wünschenswert, wenn du das Gesetz der großen Zahlen demonstrieren willst?-
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort