valg af to tilfældige spillere
Vi er ni billardspillere der fører kampregnskab i et krydsfelt.Ved venlig hjælp fra sjap http://www.eksperten.dk/spm/584659
fik jeg det til at virke automatisk.
Nu er verden bare skruet sådan sammen at nogle gange går antallet af kampe ikke op med antallet af deltagere, derfor har jeg brug for valg af to tilfældige spillere ud fra de her givne betingelser:
Spillerne står i felterne o10 til og med o18, der kan være tomme imellem de står altid i bunden de samme spillere er igen listet fra p4 til x4 startende fra venstre. Hvis der ud for nogen af disse i krydsfeltet står et "a" må de ikke vælges. Krydsfeltet ligger i p10 til og med
X18 (øverste højre / nederste venstre) "a" indikere at man er udtaget til en kamp og man kan derfor ikke spille mod sig selv
Jeg ved ikke om i skal bruge dette også, men det er hovedsageligt det automatiske valg:
Const OffsetRække = 9 'Antallet af rækker over tabelområdet (inkl. overskrifter)
Const OffsetKolonne = 15 'Antallet af kolonner til venstre for tabelområdet (inkl. overskrifter)
Const MaksDeltagere = 9 'Det maksimale antal deltagere, der er plads til i tabellen
'Har intet med det aktuelle antal deltagere at gøre
Private Sub CommandButton2_Click()
Dim Deltager1, Deltager2, Tæller, AntalMulig As Integer
Dim MuligModstander(MaksDeltagere)
Dim MuligModstander2(MaksDeltagere - 2)
Const MaksTæller = 10000
For i = OffsetRække + 1 To OffsetRække + MaksDeltagere
For j = OffsetKolonne + 1 To OffsetKolonne + MaksDeltagere
If Worksheets("1 spilledag").Cells(i, j) = "a" Or Worksheets("1 spilledag").Cells(i, j) = "b" Then
Worksheets("1 spilledag").Cells(i, j) = "X"
End If
Next j
Next i
AntalDeltagere = 0
For i = 1 To MaksDeltagere
If Not IsEmpty(Worksheets("1 spilledag").Cells(OffsetRække + i, OffsetKolonne)) Then
AntalDeltagere = AntalDeltagere + 1
End If
Next i
Randomize
Tæller = 0
Do Until Tæller > MaksTæller Or AntalMulig > 0
Deltager1 = Int((AntalDeltagere * Rnd) + 1)
AntalMulig = 0
For i = 1 To AntalDeltagere
If IsEmpty(Worksheets("1 spilledag").Cells(Deltager1 + OffsetRække, i + OffsetKolonne)) And Deltager1 <> i Then
AntalMulig = AntalMulig + 1
MuligModstander(AntalMulig) = i
End If
Next i
Tæller = Tæller + 1
Loop
If AntalMulig > 0 Then
Deltager2 = MuligModstander(Int((AntalMulig * Rnd) + 1))
Worksheets("1 spilledag").Cells(Deltager1 + OffsetRække, Deltager2 + OffsetKolonne) = "a"
End If
Tæller = 0
For i = 1 To AntalDeltagere
If Deltager1 <> i And Deltager2 <> i Then
Tæller = Tæller + 1
MuligModstander2(Tæller) = i
End If
Next i
AntalMulig = 0
Tæller = 0
Do Until Tæller > MaksTæller Or AntalMulig > 0
Deltager3 = MuligModstander2(Int(((AntalDeltagere - 2) * Rnd) + 1))
AntalMulig = 0
For i = 1 To AntalDeltagere - 2
If IsEmpty(Worksheets("1 spilledag").Cells(Deltager3 + OffsetRække, MuligModstander2(i) + OffsetKolonne)) And Deltager3 <> MuligModstander2(i) Then
AntalMulig = AntalMulig + 1
MuligModstander(AntalMulig) = MuligModstander2(i)
End If
Next i
Tæller = Tæller + 1
Loop
If AntalMulig > 0 Then
Deltager4 = MuligModstander(Int((AntalMulig * Rnd) + 1))
Worksheets("1 Spilledag").Cells(Deltager3 + OffsetRække, Deltager4 + OffsetKolonne) = "b"
End If
End Sub
Private Sub CommandButton3_Click()
Offset = OffsetRække + 2
For j = OffsetKolonne + 1 To OffsetKolonne + MaksDeltagere
For i = Offset To OffsetRække + MaksDeltagere
Worksheets("1 spilledag").Cells(i, j).ClearContents
Next i
Offset = Offset + 1
Next j
End Sub
Private Sub CommandButton1_Click()
End Sub
Private Sub ComboBox1_Change()
End Sub
Private Sub ScrollBar1_Change()
End Sub
Private Sub Worksheet_Activate()
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
Sub Makro6()
X = [j10]
[o10].Value = X
X = [j11]
[o11].Value = X
X = [j12]
[o12].Value = X
X = [j13]
[o13].Value = X
X = [j14]
[o14].Value = X
X = [j15]
[o15].Value = X
X = [j16]
[o16].Value = X
X = [j17]
[o17].Value = X
X = [j18]
[o18].Value = X
End Sub
