ich habe eine Tabelle mit mehreren Zeilen. Sind bestimmte Daten enthalten, je nach zustand, werden diese Grau oder Schwarz dargestellt. DIeses geschiet durch die bedingte Formatierung.
Hier das Makro, was ich bis jetzt gefunden habe:
Code: Alles auswählen
REM ***** BASIC *****
Sub Farben_zaehlen
oCalc = thisComponent
oSheet = oCalc.sheets(0) 'erstes Tabellenblatt
z = Array("B2:K2","B3:K3","B4:K4") 'Bereiche die geprüft werden
'Anfang der Ausgabe. Achtung: Der Index fängt bei Null an zu zählen!
rot = 11 'in Zelle (C)12
blau = 11 'in Zelle (D)12
For i = LBound(z()) To UBound(z())
oBereich=oSheet.getCellRangeByName(z(i))
x = 0
y = 0
'auslesen der Eckpunkte
iErsteSpalte = oBereich.rangeAddress.startColumn
iErsteZeile = oBereich.rangeAddress.startRow
iLetzteSpalte = oBereich.rangeAddress.EndColumn
iLetzteZeile = oBereich.rangeAddress.EndRow
For l = 0 to iLetzteZeile-iErsteZeile
For m = 0 to iLetzteSpalte-iErsteSpalte
oCell=oBereich.getCellByPosition(m,l)
if oCell.Cellbackcolor = RGB (255, 0, 0) then ' Farbe rot
x = x + 1
end if
if oCell.Cellbackcolor = RGB (0, 0, 255) then ' Farbe blau
y = y + 1
end if
mycellRot = oSheet.getCellByPosition( 2, rot) 'Ausgabe in C12 bis C14
mycellRot.value= x
mycellBlau = oSheet.getCellByPosition( 3, blau)'Ausgabe in D12 bis D14
mycellBlau.value= y
next m
next l
rot = rot +1
blau = blau +1
Next i
End Sub
oCell.Cellbackcolor = RGB (255, 0, 0) -> Dieses Funktioniert nur mit manueller Fomratierung.
- Was müsste geändert werden, damit es mit der bedingten Formatierung zusammen arbeitet?
- Wie sieht es aus, wenn ich anstelle des Hintergrundes die Schriftfarbe nehmen möchte?
Hier ist die Ausgabe der Werte für Rot und Blau nebeneinander und für die unterschiedlichen Bereiche unter eiander.
Wie müsste es aussehen, wenn ich Rot und Blau untereinander und die unterschiedlichen Bereicheneben eiander haben möchte?
Ich habe mal an den Werten für die 'Ausgabe rum gebastelt.
Code: Alles auswählen
rot = 11 'in Zelle (C)12
blau = 11 'in Zelle (D)11
...
mycellRot = oSheet.getCellByPosition( 2, rot) 'Ausgabe in C12 bis C14
...
mycellBlau = oSheet.getCellByPosition( 3, blau)'Ausgabe in D12 bis D14
...
Im Netz habe ich zu meinen Problemen verständlichen Lösungsansatz gefunden.