Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1188to1192
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
Inhaltsverzeichnis

Füllfarbe per Zufall auswählen

Füllfarbe per Zufall auswählen
webdepp
Hallo Experten,
ich habe ein kleines Problem. Und zwar füge ich über VBA gesteuert Daten in ein Excelblatt ein. Die Daten werden immer in der gleichen Spalte geschrieben und er nimmt für die nächsten Daten immer nur eine neue Zeile. Die Zelle fülle ich mit einer Hintergundfarbe.
Jetzt kommt der Haken, ich möchte die Füllfarbe der Zelle per Zufall auswählen lassen, bzw als zweite Möglichkeit soll er aus eine Liste von vorgebenen Farben per Zufall eine auswählen. Doppellte Farben dürfen nicht vorkommen. Kann mir da jmd helfen?
Wenn ich vllt noch die Zellenhöhe irgendwie in CM angeben könnte wäre das super. Aber wichtiger ist die Farbe.
Vielen Dank
webdepp

Private Sub Start_Click()
Dim v_lpar, v_cpu, i, z, v_lastrow As Integer
Dim v_ram_mb As Long
Dim v_ram_gb As Double
Dim v_suche_1, v_suche_2 As String
suchspalte = 4
i = 6
'ermmiteln der ersten leere Zelle
For z = 8 To 34
If Sheets("HW_SMI").Cells(z, 4) = "" Then
Exit For
End If
Next z
'Schleife für alle Suchwörter
For suchzeile = 8 To z
'Festlegung Suchwort
v_suche_1 = Sheets("HW_SMI").Cells(suchzeile, suchspalte).Value
'Prüfung ob Suchwort dem vorher gehenden entspricht
If v_suche_1  v_suche_2 Then
'Berechnung Werte nach Suchwort
v_lpar = WorksheetFunction.CountIf(Sheets("HW_SMI").Range("D8:D34"), v_suche_1)
v_cpu = WorksheetFunction.SumIf(Sheets("HW_SMI").Range("D8:AC34"), v_suche_1, _
Sheets("HW_SMI").Range("T8:T34"))
v_ram_mb = WorksheetFunction.SumIf(Sheets("HW_SMI").Range("D8:AC34"), v_suche_1, _
Sheets("HW_SMI").Range("Z8:Z34"))
v_ram_gb = Round((v_ram_mb / 1024), 2)
'Schreiben der Daten in Zelle
Sheets("Grafik_Koeln").Cells(i, 1) = "Lpar: " & v_lpar & " / CPU: " & v_cpu & _
" / RAM: " & v_ram_gb
'Zellenformatierung
'Zeilenhöhe
Sheets("Grafik_Koeln").Rows(i).RowHeight = 15 * v_lpar
'Anordnung Text
Range("A" & i).Select
With Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
End With
'Füllfarbe
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
End With
v_suche_2 = v_suche_1
i = i + 1
End If
Next suchzeile
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Füllfarbe per Zufall auswählen
25.11.2010 14:43:32
fcs
Hallo webdepp,
hier beispielhaft mit ein paar Colorindex-Werten, wie du Zufallsfarben zuweisen könntest.
Du muss natürlich mindestens soviele Farbwerte vorgeben, wie du maximal Suchbegriffe hast.
Du kannst statt mit ColorIndex natürlich auch mit der Eigenschaft Color arbeiten und im Array die entsprechendne Color-Werte vorgeben.
Zeilenhöhe:
Excel arbeitet in Punkt.
72 / 2.54 = 28.35 entspricht ungefähr 1 cm
Diese Umrechnung muss du halt in deine Prozedur einbauen.
Gruß
Franz
Private Sub Start_Click()
Dim v_lpar, v_cpu, i, z, v_lastrow As Integer
Dim v_ram_mb As Long
Dim v_ram_gb As Double
Dim v_suche_1, v_suche_2 As String
Dim lIndex As Long, arrColorIndex, arrVerwendet() As Boolean, icount As Long
'Array mit den zu verwendenden Colorindex-Nummern
arrColorIndex = Array(3, 4, 5, 6, 7, 8, 19, 34, 35, 36, 39, 45, 46)
ReDim arrVerwendet(LBound(arrColorIndex) To UBound(arrColorIndex))
VBA.Randomize (1)
icount = LBound(arrColorIndex) - 1
suchspalte = 4
i = 6
'ermmiteln der ersten leere Zelle
For z = 8 To 34
If Sheets("HW_SMI").Cells(z, 4) = "" Then
Exit For
End If
Next z
'Schleife für alle Suchwörter
For suchzeile = 8 To z
'Festlegung Suchwort
v_suche_1 = Sheets("HW_SMI").Cells(suchzeile, suchspalte).Value
'Prüfung ob Suchwort dem vorher gehenden entspricht
If v_suche_1  v_suche_2 Then
'Berechnung Werte nach Suchwort
v_lpar = WorksheetFunction.CountIf(Sheets("HW_SMI").Range("D8:D34"), v_suche_1)
v_cpu = WorksheetFunction.SumIf(Sheets("HW_SMI").Range("D8:AC34"), v_suche_1, _
Sheets("HW_SMI").Range("T8:T34"))
v_ram_mb = WorksheetFunction.SumIf(Sheets("HW_SMI").Range("D8:AC34"), v_suche_1, _
Sheets("HW_SMI").Range("Z8:Z34"))
v_ram_gb = Round((v_ram_mb / 1024), 2)
'Schreiben der Daten in Zelle
Sheets("Grafik_Koeln").Cells(i, 1) = "Lpar: " & v_lpar & " / CPU: " & v_cpu & _
" / RAM: " & v_ram_gb
'Zellenformatierung
'Zeilenhöhe
Sheets("Grafik_Koeln").Rows(i).RowHeight = 15 * v_lpar
'Anordnung Text
Range("A" & i).Select
With Selection.Interior
FarbeNeu:
lIndex = Int((UBound(arrColorIndex) - LBound(arrColorIndex) + 1) * VBA.Rnd + _
LBound(arrColorIndex))
If arrVerwendet(lIndex) = True Then GoTo FarbeNeu
arrVerwendet(lIndex) = True
icount = icount + 1
If icount = UBound(arrColorIndex) Then
'Es gibt mehr Suchbegriffe als Farben im Array, alle Farben werden zur Markierung  _
_
wieder freigeschaltet
ReDim arrVerwendet(LBound(arrColorIndex) To UBound(arrColorIndex))
icount = LBound(arrColorIndex) - 1
End If
.ColorIndex = arrColorIndex(lIndex)
.Pattern = xlSolid
End With
'Füllfarbe
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
End With
v_suche_2 = v_suche_1
i = i + 1
End If
Next suchzeile
End Sub

Anzeige
AW: Füllfarbe per Zufall auswählen
25.11.2010 22:11:12
webdepp
Hallo Franz,
vielen vielen Dank... Genau sowas habe ich gesucht.
Gruß webdepp

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige