Hallo zusammen,
ich habe folgendes Problem:
Ich habe vier Tabellenblätter mit jeweils einer Liste in der Namen von Personen gegenüber stehen (Anhang 1).
Nun möchte ich, dass immer einer der beiden Zellen in einer Zeile zufällig eingefärbt wird. Bisher habe ich es mit folgendem VBA versucht:
Sub randomColor()
Dim rng As Range
Dim strAddress() As String
Dim lngRnd As Long, lngIndex As Long
With Range("C4:D22")
.Interior.ColorIndex = xlNone
ReDim strAddress(1 To .Count)
For lngIndex = 1 To .Count
strAddress(lngIndex) = .Cells(lngIndex).Address
Next
End With
Randomize Timer
For lngIndex = 1 To 19
lngRnd = Int((UBound(strAddress)) * Rnd + 1)
If rng Is Nothing Then
Set rng = Range(strAddress(lngRnd))
Else
Set rng = Union(rng, Range(strAddress(lngRnd)))
End If
strAddress(lngRnd) = strAddress(UBound(strAddress))
ReDim Preserve strAddress(1 To UBound(strAddress) - 1)
Next
rng.Interior.Color = vbYellow
Set rng = Nothing
End Sub
Problem hierbei ist, dass wie im Anhang 1 zu sehen wirklich 19 zufällige ausgewählt werden, sodass z.B Zellen C9 und C10 beide gelb sind. Es sollen aus jeder Zeile aber immer nur eine Zelle gelb sein.
Eine weitere Schwierigkeit kommt dadurch hinzu, dass in den 4 Tabellenblättern jede Partnerschaft doppelt vorkommt - z.B: Im Anhang 1 ist X10 mit Y10 Partner und in einem anderen Tabellenblatt dann Y10 mit X10. Hier müssen die Farben natürlich identisch sein.
Zum Hintergrund: Die Farbe soll signalisieren welcher der beiden Partner Heimvorteil hat.
Hat hier jemand eine kreative Lösung?
Vielen Dank und beste Grüße,
KO