❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Schriftfarbe in Calc ändern

Alles zur Programmierung im LibreOffice.
Antworten
Neydiju
Beiträge: 2
Registriert: Mo 23. Jul 2012, 17:56
Kontaktdaten:

Schriftfarbe in Calc ändern

Beitrag von Neydiju » Mo 23. Jul 2012, 18:05

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
Zuletzt geändert von Neydiju am Di 24. Jul 2012, 10:22, insgesamt 1-mal geändert.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2580
Registriert: Fr 10. Dez 2010, 10:01

Re: Schriftfarbe in Calc ändern

Beitrag von karolus » Mo 23. Jul 2012, 20:06

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
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

Neydiju
Beiträge: 2
Registriert: Mo 23. Jul 2012, 17:56
Kontaktdaten:

Re: Schriftfarbe in Calc ändern

Beitrag von Neydiju » Di 24. Jul 2012, 10:22

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


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten