Seite 1 von 1

Schriftfarbe in Calc ändern

Verfasst: Mo 23. Jul 2012, 18:05
von Neydiju
Hallo!!

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
Statt des Hintergunds will ich aber ja eigentlich die Schrift ändern. Gibt es dazu auch irgendwo eine Zelleigenschaft? Oder sonst irgendwas?

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

Re: Schriftfarbe in Calc ändern

Verfasst: Mo 23. Jul 2012, 20:06
von karolus
Hallo

Das was du machen willst geht problemlos per bedingter Formatierung.

Dein Code wirft allenfalls Fehlermeldungen - aber ändert keine Hintergrundfarbe ( es gibt kein Attribut ...CellBackForeColor ).

Wenn du in OOo/Libreoffice wirklich ernsthaft programmieren (lernen) willst, solltest du dich in die Grundlagen einlesen http://www.dannenhoefer.de/faqstarbasic/index.html und dir http://extensions.services.openoffice.o ... roject/MRI besorgen.

Karo

Re: Schriftfarbe in Calc ändern

Verfasst: Di 24. Jul 2012, 10:22
von Neydiju
Hallo!

Vielen Dank für die schnelle Antwort!!

Oh ja, ich hatte das ausprobiert und wollte dann mit Strg+Z das in den Ursprungszustand versetzten, der löscht aber die Voreingabe nicht... Also wenn man das Fore rauslässt funktionierts ;)

Und danke für die Hilfeseiten!! Die sind ja super =)
Jetzt funktioniert auch der Quelltext:

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.CharColor = rot
				case 2
				  cell.CharColor = gelb
				case 3
				  cell.CharColor = gruen
			end select
		next rem s
	next rem z
	rem ----------------------------------------------------------------------
end sub
Viele Grüße,
Neydiju