Ich hab seit Jahren nicht mehr Basic programmiert und wollte jetzt aber eine Tabelle übersichtlicher gestalten. Dazu sollen 3 Zellen in einer Spalte rot, gelb oder grün eingefärbt werden, abhängig davon, welche Kategorie in der 3. Zelle (= E6 abwärts) steht: 1 = rot, 2 = gelb, 3 = grün.
Ich habe mir jetzt ein Makro zusammengebastelt, was immerhin den Hintergrund schon richtig einfärbt.
Code: Alles auswählen
REM ***** BASIC *****
option explicit
sub Kategorienfarben
rem ----------------------------------------------------------------------
rem Deklaration
dim einkaufsl as object
dim cell as object
dim cellKat as integer
dim s as integer
dim z as integer
dim rot as long
dim gruen as long
dim gelb as long
rem ----------------------------------------------------------------------
rem Initialisierung
s = 0
rot = 13172758
gelb = 16749838
gruen = 5741852
rem Zugang zum Dokument
einkaufsl = ThisComponent.Sheets(0)
rem ----------------------------------------------------------------------
rem Körper
for z = 5 to 79 rem 6 ist erste Zeile der Eintraege, 80 zur Zeit letzte (minus 1 jeweils, weil es bei 0 anfaengt)
cellKat = einkaufsl.getCellByPosition(4,z).value
for s=2 to 4 rem entspricht C bis E
cell = einkaufsl.getCellByPosition(s,z)
select case cellKat
case 1
cell.CellBackBackColor = rot
case 2
cell.CellBackColor = gelb
case 3
cell.CellBackColor = gruen
end select
next rem von s
next rem von z
rem ----------------------------------------------------------------------
end sub
Ggf. könnte man das auch über bedingte Formatierung lösen, aber da kann ich ja immer nur eine Zelle und nicht die drei Zellen einfärben, oder?
Herzlichen Dank und viele Grüße,
Neydiju