Seite 1 von 2
Zeile markieren hervorheben bei Auswahl einer Zelle [gelöst]
Verfasst: Fr 16. Jun 2023, 17:48
von Tschubi
Hallo zusammen,
ich suche iene Möglichkeit die ganze Zeile oder im ideal Fall nur einen festgelegten Breich einer Zeile hervorzuheben sobald ich eine Zelle dieser Zeile anklicke.
Lässt sich das irgendwie mit bedingter Formatierung bewältigen oder eher per Makro?
Vielen Dank und Grüße
Re: Zeile markieren hervorheben bei Auswahl einer Zelle
Verfasst: Sa 17. Jun 2023, 09:59
von F3K Total
Moin,
ich habe das mal programmiert, siehe auch Beispiel anbei.
Code: Alles auswählen
global noldrow as integer
global osheet as object
global bfirst as boolean
Sub S_change_cellbackcolor_in_actual_row(event)
if not bfirst then goto 100
S_remove_cellbackcolor_in_old_row
100:
ocell = event
if ocell.supportsservice("com.sun.star.sheet.SheetCell") then
ocelladdress = ocell.celladdress
nsheet = ocelladdress.sheet
osheet = thiscomponent.sheets(nsheet)
nRow = ocelladdress.Row
noldrow = nRow
orange = osheet.getcellrangebyposition(0,nRow,6,nRow)'A=0 bis G=6
orange.CellBackColor = 16760320
endif
bfirst = true
End Sub
Sub S_remove_cellbackcolor_in_old_row
orange = osheet.getcellrangebyposition(0,noldRow,6,noldRow)'A=0 bis G=6
orange.CellBackColor = -1
End Sub
Hänge das Makro
S_change_cellbackcolor_in_actual_row an das Tabellenereignis

- TE1.png (11.11 KiB) 6891 mal betrachtet
Auswahl geändert.

- TE2.png (13.35 KiB) 6891 mal betrachtet
Gruß R
Re: Zeile markieren hervorheben bei Auswahl einer Zelle
Verfasst: Sa 17. Jun 2023, 12:29
von Tschubi
Hallo F3k Total,
super besten Dank.
Nachdem ich mir deine Umsetzung angeschuat habe ist mir bewusst geworden, dass die Zellen wo ich das gern einsetzen wollen würde ja bereits eine Hintergrundfarbe, nicht weiß, haben.
Jetzt habe ich aus anderen Beiträgen in dein Makro eine Funktionen eingefügt um die Zellenfarbe zuvor auszulesen um diese dann wieder setzen zu können. (siehe Datei Anhang)
Das Funktioniert aber nicht wie gedacht.

Kannst du dir das bitte mal anschauen?
Ich frage mich auch ob die Idee in der Praxis so die Beste ist, denn im Tabellenblatt gibt es ja auch andere Bereiche in welchen ich Daten erfasse und das Makro greift ja immer wenn eine Zelle ausgewählt wird. Vielleicht ist es sinnvoller nur im gewünschten Bereich die Schrift fett zu machen um eine schnelle Zuordnung auf die Zeile bzw. den Bereich zu bekommen, hm.
Vielen Dank und Gruß
Re: Zeile markieren hervorheben bei Auswahl einer Zelle
Verfasst: So 18. Jun 2023, 09:07
von F3K Total
... dann forsche mal schön, du hast alles bekommen, was nötig ist.
Viel Spaß Gruß R
Re: Zeile markieren hervorheben bei Auswahl einer Zelle
Verfasst: So 18. Jun 2023, 13:59
von musikai
Tschubi hat geschrieben: ↑Sa 17. Jun 2023, 12:29
Nachdem ich mir deine Umsetzung angeschuat habe ist mir bewusst geworden, dass die Zellen wo ich das gern einsetzen wollen würde ja bereits eine Hintergrundfarbe, nicht weiß, haben.
Jetzt habe ich aus anderen Beiträgen in dein Makro eine Funktionen eingefügt um die Zellenfarbe zuvor auszulesen um diese dann wieder setzen zu können. (siehe Datei Anhang)
Das Funktioniert aber nicht wie gedacht.

Kannst du dir das bitte mal anschauen?
Die alte Farbe muss in einer Variable gespeichert werden, die zudem im Dokument mit gespeichert wird, denn wenn Du z.B. eine ursprünglich rote Zeile markiert hattest, die nun graublau ist, willst du ja beim Wiederöffnen der Datei diese rote farbe wiederherstellen können.
Deshalb ist im angehängten Beispiel unter Datei->Eigenschaften->Benutzerdefinierte Eigenschaften eine Variable "oldfarbe" eingerichtet, die im Makro verwendet wird.
Tschubi hat geschrieben: ↑Sa 17. Jun 2023, 12:29
Ich frage mich auch ob die Idee in der Praxis so die Beste ist, denn im Tabellenblatt gibt es ja auch andere Bereiche in welchen ich Daten erfasse und das Makro greift ja immer wenn eine Zelle ausgewählt wird. Vielleicht ist es sinnvoller nur im gewünschten Bereich die Schrift fett zu machen um eine schnelle Zuordnung auf die Zeile bzw. den Bereich zu bekommen, hm.
Vielen Dank und Gruß
Ja, viel Spaß beim experimentieren. (Ich glaube mich zu erinnern, dass es komplizierter wird, Schrifteffekte zu verändern.)
Re: Zeile markieren hervorheben bei Auswahl einer Zelle
Verfasst: Mi 21. Jun 2023, 11:06
von Tschubi
Hallo musikai,
besten Dank für deine Arbeit. Ich habe noch eine Verständnisfrage.
Die alte Farbe muss in einer Variable gespeichert werden, die zudem im Dokument mit gespeichert wird, denn wenn Du z.B. eine ursprünglich rote Zeile markiert hattest, die nun graublau ist, willst du ja beim Wiederöffnen der Datei diese rote farbe wiederherstellen können.
Deshalb ist im angehängten Beispiel unter Datei->Eigenschaften->Benutzerdefinierte Eigenschaften eine Variable "oldfarbe" eingerichtet, die im Makro verwendet wird.
Das macht Sinn und ist nachvollziehbar. Was ich nicht verstehe warum diese Variable "oldfarbe" in den Eigenschaften definiert wird und nicht als globale Variable im Makro und warum diese den Wert -1 hat?
Danke und Gruß
Re: Zeile markieren hervorheben bei Auswahl einer Zelle
Verfasst: Mi 21. Jun 2023, 11:42
von musikai
Tschubi hat geschrieben: ↑Mi 21. Jun 2023, 11:06
Das macht Sinn und ist nachvollziehbar. Was ich nicht verstehe warum diese Variable "oldfarbe" in den Eigenschaften definiert wird und nicht als globale Variable im Makro und warum diese den Wert -1 hat?
Eine globale Variable überlebt keinen Programm-Neustart, sondern wird zurückgesetzt.
Wenn Du also als letztes eine rote Zeile markiert hattest, würde diese am nächsten Tag wieder auf "keine Farbe" zurückgesetzt werden.
-1 bedeutet "keine Farbe". Diesen Wert habe ich nur voreingestellt, weil in der Datei als letztes eine Zeile markiert war, die ursprünglich keine Farbe hatte.
Außerdem könntest Du ja mehrere unterschiedliche Dateien haben, in denen der Cursor an verschiedenen Stellen gesetzt war.
(Insgesamt müsste man das Macro evtl. noch anpassen für den Fall, dass Du mehrere Zellen ausgewählt hast, da versagt es zur Zeit. usw.)
Re: Zeile markieren hervorheben bei Auswahl einer Zelle
Verfasst: Fr 23. Jun 2023, 10:06
von Tschubi
Hallo musikai,
danke für die Erklärungen und macht es nachvollziehbarer für mich - Top
Für meinen Einsatzzweck sollte es so reichen und ich werde jetzt mal das in der Praxis etwas testen. Habe das Makro "S_change_cellbackcolor_in_actual_row" jetzt mal auf Doppelklick zugewiesen und auf Rechtsklick das "S_remove_cellbackcolor_in_old_row" dann kann ich weiterhin Zellen / Zeilen markieren und einfügen ohne, dass das Makro greift.
Vielleicht kannst du mir noch sagen wie ich Schrift Bold noch mit setzen könnte und wieder zurück.
Danke!
Re: Zeile markieren hervorheben bei Auswahl einer Zelle
Verfasst: Fr 23. Jun 2023, 21:07
von musikai
Tschubi hat geschrieben: ↑Fr 23. Jun 2023, 10:06
Hallo musikai,
danke für die Erklärungen und macht es nachvollziehbarer für mich - Top
Gerne, immer froh, wenn's jemand versteht.
Tschubi hat geschrieben: ↑Fr 23. Jun 2023, 10:06
Vielleicht kannst du mir noch sagen wie ich Schrift Bold noch mit setzen könnte und wieder zurück.
Danke!
Musste selbst erstmal hier nachlesen:
https://www.prooo-box.org/live/dokument ... eutsch.pdf
Man kann direkt die Eigenschaften im Service com.sun.star.style.CharacterProperties anwenden.
Zu finden in
Tabelle 135. Eigenschaften im Service com.sun.star.style.CharacterProperties.
https://www.prooo-box.org/live/dokument ... 789%2C0%5D
Also so:
Code: Alles auswählen
orange.CharWeight = com.sun.star.awt.FontWeight.BOLD
orange.CharWeight = com.sun.star.awt.FontWeight.NORMAL
Re: Zeile markieren hervorheben bei Auswahl einer Zelle
Verfasst: Sa 24. Jun 2023, 16:13
von Tschubi
Hallo musikai,
perfekt! Dankeschön.
Auch für die Links zu den PDFs.
Schönes WE