autom.Formatierung-Veränderungder Hintergrundfarbe beiEintra

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

histrioniker
*
Beiträge: 15
Registriert: Mi, 02.05.2007 22:31
Wohnort: Hude i.O.

autom.Formatierung-Veränderungder Hintergrundfarbe beiEintra

Beitrag von histrioniker »

Hallo!
Ich schraube gerade mit zunehmender Frustration an einem Jahreskalender für unsere Firma rum. In dem Kalender möchte ich bei verschiedenartigen Eintragungen von Buchstaben (u -für Urlaub, m - Abbau von Überstunden, k -für Krank; insgesamt werden es wohl 10 verschiedene Varianten) eine Änderung des Zellhintergrundes erreichen.
Dazu habe ich
-Formatvorlagen erstellt
-einen Vorlagenbereich "Farben" auf einem anderen Tabellenblatt "Grund" definiert
-mich im Forum kundig gemacht;

nur leider seh ich bei all meinem Tun, dass ich s enfach nicht begriffen habe.

Ich steh auf meinem Tabellenblatt "Januar" in der Zelle F15 und die Dinge die laut Beschreibung im Forum passieren sollten passieren enfach nicht.

eine der überschaubarsten Beschreibungen habe ich hier; aber die kann ich auch nicht auf meine Bedürfnisse umstellen:

bei Zeichen machst Du das so:
&T(VORLAGE("Name"))
dann hast Du keine 0, die Du wieder wegnehmen musst.



Meine Umstellung würde jetzt heißen: =&T(Vorlage("Farben"))
openoffice hat dann zunächst einen Fehler gefunden und angeboten, diesen zu beheben. Bitte! Danach verschwand dann das &-Zeichen. Mit Enter habe ich die Zelle verlassen, anschließend habe ich wieder hinein-geklickt und ein u (für Urlaub -Farbe grün) eingetragen.

Ergebnis: Die Formel ist wech --- das u ist aber noch da!!!

Langsam bekomm ich ein leicht debiles Grinsen; das müssen die Nerven sein :lol:

-helft bitte

Gruß

volker
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Re: autom.Formatierung-Veränderungder Hintergrundfarbe beiEintra

Beitrag von Eia »

histrioniker hat geschrieben: Meine Umstellung würde jetzt heißen: =&T(Vorlage("Farben"))
Im Prinzipt geht natürlich die Formel:
=T((VORLAGE("Farbe")))
aber welchen Zweck sollte das haben? Da kannst Du stattdessen doch auch direkt eine Zellvorlage zuordnen.
Die Variante
&T((VORLAGE("Farbe")))
ist ja dafür gedacht, z.B. im Zusammenhang mit einer WENN- oder SVERWEIS-Auswahl unterschiedliche Vorlagen anzuwenden, also z.B.:
=WENN(ISTGERADE_ADD(SUMME(A4:A5));SUMME(A4:A5)+VORLAGE("Farbe");SUMME(A4:A5)+VORLAGE("Standard"))

Mein Beispiel beinhaltet jetzt nur Zahlen, daher
+VORLAGE("Farbe")
statt
&T(VORLAGE("Farbe"))
was bei Zeichenketten angewendet werden müsste.

Beschreib doch einfach mal, wieviele Fälle Du unterscheiden mußt und wie der Zellinhalt sich zusammensetzt (ohne Format). Wenn Du höchstens 3 Fälle unterscheiden willst, wäre eine bedingte Formatierung der bessere Weg.
Sonst musst Du die Formel so schreiben:
="u"&T(VORLAGE("FarbeU"))
="k"&T(VORLAGE("FarbeK"))
...
dann kannst Du aber die Vorlagen auch grade so gut direkt zuweisen

mfG
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: autom.Formatierung-Veränderungder Hintergrundfarbe beiEintra

Beitrag von Toxitom »

Hey Volker,

vergiss die Formeln. Die überschreibst du ja immer wieder. Nutze "Bedingte Formatierung", zu finden unter Format - Bedingte Formatierung.
Dort kannst du bis zu drei Bedingungen formulieren und damit die Farbe der Zelle bestimmen, bei dir also soetwas wie:
Bedingung 1:
Zellwert - ist gleich - "u" - Vorlage "gruen"

Bei mehr als drei Bediungungen wird es aber schwierig. Stephan hat oder schreibt gerade eine entsprechende Extension - frag ihn doch einfach einmal :-)

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Gert Seler
*******
Beiträge: 1763
Registriert: Di, 03.10.2006 18:05

Re: autom.Formatierung-Veränderungder Hintergrundfarbe beiEintra

Beitrag von Gert Seler »

Hallo Histri...,
Mit der "bedingten Formatierung" sollt es gehen. Schau mal hier :

http://www.ooowiki.de/CalcFormatBedingt/ZellFormat


mfg
Gert
Es gibt nichts gutes, außer man tut es.
Win7_64 / LO_4.4.5.2
histrioniker
*
Beiträge: 15
Registriert: Mi, 02.05.2007 22:31
Wohnort: Hude i.O.

Re: autom.Formatierung-Veränderungder Hintergrundfarbe beiEintra

Beitrag von histrioniker »

Hallo -nochmal!!
Die bedingte Formatierung habe ich in meiner Tabelle bereits in Nutzung, bei der bedingten Formatierung habe ich auch nur die Auswahl zwischen 3 (oder so) verschiedenen Möglichkeiten .

Ich will etwa 10 -einzelne- Buchstaben in die Zellen einfügen und entsprechend des Buchstaben soll die Hintergrundfarbe sich ändern.

Wie in meiner Anfrage vieleicht deutlich wurde bin ich nicht wirklich der Tabellenfuchs und leider immer noch ratlos.

Den Hinweis von eia
="u"&T(VORLAGE("FarbeU"))
="k"&T(VORLAGE("FarbeK"))


habe ich auch sofort umgesetzt; wirft aber auch nur ein u vor einem grünen Hintergrund (sollte auch so sein) aus. Ich will die Eintragung machen der PC soll dann die Farbe bestimmen.

Der Hinweis von ToxiTom; dass die Formel immer wieder überschreiben wird ist richtig. Daher komm ich weder mit der bedingten Formatierung noch mit einer Formel weiter.
H I L F E !!!

gruss
volker
Eia
********
Beiträge: 2614
Registriert: Sa, 23.12.2006 07:40

Re: autom.Formatierung-Veränderungder Hintergrundfarbe beiEintra

Beitrag von Eia »

Es gibt nur diese zwei Varianten:
entweder die bedingte Formatierung mit derzeit maximal 3 verschiedenen Zuweisungsmöglichkeiten
oder das Benutzen der Funktion VORLAGE, die aber immer mit & an einen Zellinhalt angehängt werden muss.
Ein Ausweg ist auf der schon erwähnten wiki-Seite beschrieben unter dem Stichwort "Viele Bedingungen":
Dazu müsstest Du die Tabelle im Doppel führen, also eine Tabelle für das Eingeben und eine Tabelle für das Darstellen. Von den Zellen der zweiten Tabelle greifst Du mit =Tabelle.A1 auf die Zellen der Eingabe-Tabelle zu. In den Zellen, in denen Du die Kürzel hast, kommt dann die Vorlagen-Definition hinzu:
=Tabelle1.A1&WENN......
bzw. eleganter wie im Beispiel beschrieben mit SVERWEIS
mfG
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: autom.Formatierung-Veränderungder Hintergrundfarbe beiEintra

Beitrag von Karolus »

Hallo
Nein, es gibt eine dritte Variante, Toxitom hat sie bereits erwähnt nämlich über ein Makro die bedingten Formatierungen einzutragen.
Folgender Code ist ursprünglich von Stephan, ich finde leider im Moment nicht den Thread zum Zitieren.

Code: Alles auswählen

Sub bedingteFormatierung()
dim BedingtFormat as Object
zelleintrag() = array("U","K","S","W")'<trag hier die Zellinhalte ein.....
'.......und in der folgenden Zeile die Namen der Zellvorlagen in analoger Reihenfolge
Formatname() = array("urlaub","krank","sonderurlaub","weiterbildung")
bereich = thisComponent.getcurrentSelection.rangeAddress
with bereich
	erstSp = .startColumn
	erstzei = .startRow
	endSpa = .EndColumn
	endZei = .EndRow
end with
dim Zellformat(3) as New com.sun.star.beans.PropertyValue
Zellformat(0).Name = "Operator"
Zellformat(0).value = com.sun.star.sheet.ConditionOperator.EQUAL
Zellformat(1).Name = "Formula1"
Zellformat(2).Name = "StyleName"

tabblatt = thisComponent.currentcontroller.activesheet
for sp = erstSp to endSpa
	for ze = erstzei to endZei
	BedingtFormat = tabblatt.getcellbyPosition(sp,ze).ConditionalFormat
		For b = 0 to ubound(zelleintrag())
			
			Zellformat(1).value = chr(34) & zelleintrag(b) & chr(34)
			Zellformat(2).value = Formatname(b)
			BedingtFormat.addNew( Zellformat())
		next b
		tabblatt.getcellbyPosition(sp,ze).ConditionalFormat = BedingtFormat
	next ze
next sp
end sub	
Trage deine Kürzel die formatiert werden sollen und in analoger Reihenfolge die zuzuordnenten Formatvorlagennamen in Zeile 2 und 3 des Makrocodes ein, kopiere den Code nach ->Extras->Makros->Makros verwalten->OOobasic 'Meine makros..' 'Standard' 'Module1'
(evtl. ein neues Modul erzeugen über Schaltfl. 'neu')

Danach markierst du den Zellbereich der bedingt formatiert werden soll und startest das Makro.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
histrioniker
*
Beiträge: 15
Registriert: Mi, 02.05.2007 22:31
Wohnort: Hude i.O.

Re: autom.FormatierungVeränderung-funktioniert doch

Beitrag von histrioniker »

Mensch Karolus! Vielen Dank!
Nicht das ich in vollem Umfang verstanden habe, was ich da gerade gemacht habe aber es funktioniert.
Der Rechner benötigte zwar zunächst etwas Zeit, die 90 Zeilen und 31 Spalten mit dem Makro zu versehen, der Bildschirm wies im stetigen Wechsel Schwarz und die orginal-Farben aus. Ein sehr hyperaktives Flackern. Aber egal er macht, an den Wochentagen was ich will.
Leider hab ich auf den Samstagen und auf den Sonn-bzw.Feiertagen jeweils noch eine bedingte Formatierung hinterlegt. In dem Bereich wo diese bedingte Formatierung greift wird die Hintergrundfarbe nicht mit der Hintergrundfarbe versehen, die diesem Buchstaben zugewiesen ist.

Kann ich hier das Makro in die bedingte Formatierung einsetzen; sozusagen als wenn Bedingung??

WENN(WOCHENTAG(F$6)=7)
--dann Samstag

So sieht die Einstellung für den Samstag aus, könnt Ihr mir eine entsprechende Bedingung nennen, mit der ich an mein Ziel gelange????


Gruß
volker
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: autom.Formatierung-Veränderungder Hintergrundfarbe beiEintra

Beitrag von Karolus »

Hallo
Ich habs jetzt nicht nachgeprüft, aber bereits vorhandene Formatierungen für die Wochenenden und Feitertage sollten von dem Makro nicht überschrieben werden, falls du möchtest das die vom Makro geschriebenen Einträge Priorität haben sollen ? - ändere mal die bisherige Wochenendsbedingung in:

(F6="")*(WOCHENTAG(F$6;2)>5)
und setze dieses bedingte Format wie bisher, und führe dann erst nachher die Formierung mit dem Makro aus.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: autom.Formatierung-Veränderungder Hintergrundfarbe beiEintra

Beitrag von Karolus »

Hallo

Ich hab in Marc Bächingers Basic.pdf noch eine Möglichkeit gefunden bedingte Formate nicht zellenweise sondern bereichsweise einzutragen.http://www.prooo-box.org/~schmidjo/forum/calc_basic.pdf

Code: Alles auswählen

  Sub bedingteFormatierung()
dim BedingtFormat as Object
dim tabblatt as object
dim abereich as object
zelleintrag() = array("U","K","S","W")'<trag hier die Zellinhalte ein.....
'.......und in der folgenden Zeile die Namen der Zellvorlagen in analoger Reihenfolge
Formatname() = array("urlaub","krank","sonderurlaub","weiterbildung")
bereich = thisComponent.getcurrentSelection.rangeAddress
with bereich
   erstSp = .startColumn
   erstzei = .startRow
   endSpa = .EndColumn
   endZei = .EndRow
end with

dim Zellformat(3) as New com.sun.star.beans.PropertyValue
Zellformat(0).Name = "Operator"
Zellformat(0).value = com.sun.star.sheet.ConditionOperator.EQUAL
Zellformat(1).Name = "Formula1"
Zellformat(2).Name = "StyleName"

tabblatt = thisComponent.currentcontroller.activesheet
abereich = tabblatt.getcellrangebyposition(erstSp,erstzei,endSpa,endzei)
'↓ "ConditionalFormatLokal" unterstützt Zugriff auf Range <> "ConditionalFormat"
   BedingtFormat = abereich.ConditionalFormatLocal
   'BedingtFormat.clear()  '<Hier auskommentieren falls vorhandene BF gelöscht werden sollen
      For b = 0 to ubound(zelleintrag())
         Zellformat(1).value = chr(34) & zelleintrag(b) & chr(34)
         Zellformat(2).value = Formatname(b)
         BedingtFormat.addNew( Zellformat())
       next b
        abereich.ConditionalFormat = BedingtFormat
'Aufruf der Zusatzfunktion:
'zuBFormat(erstSp,erstzei,endSpa,endzei)
end sub 
In dieser Form läuft das Makro wesentlich schneller , es ist mir leider noch nicht gelungen Volkers "Wocheend-bedingung im Makro umzusetzen. Ich füg meinen Versuchscode mal trotzdem hier an:

Code: Alles auswählen

 function zuBFormat(asp,azei,endsp,endzei)
dim BedingtFormat as Object
dim tabblatt as object
dim abereich
tabblatt = thisComponent.currentcontroller.activesheet
abereich = tabblatt.getcellrangebyposition()
BedingtFormat = abereich.ConditionalFormatLocal
dim Zellformat(3) as New com.sun.star.beans.PropertyValue
Zellformat(0).Name = "Operator"
Zellformat(0).value = com.sun.star.sheet.ConditionOperator.FORMULA
Zellformat(1).Name = "Formula1"
Zellformat(1).Value = "UND(WOCHENTAG(INDIREKT(ADRESSE(6;SPALTE()));2)>5;INDIREKT(ADRESSE(ZEILE();SPALTE()))="")"
Zellformat(2).Name = "StyleName"
Zellformat(2).Value = "samstag"
BedingtFormat.addNew( Zellformat())
abereich.ConditionalFormat = BedingtFormat
End function
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: autom.Formatierung-Veränderungder Hintergrundfarbe beiEintra

Beitrag von Stephan »

es ist mir leider noch nicht gelungen Volkers "Wocheend-bedingung im Makro umzusetzen.


für:

Code: Alles auswählen

Zellformat(1).Value = "UND(WOCHENTAG(INDIREKT(ADRESSE(6;SPALTE()));2)>5;INDIREKT(ADRESSE(ZEILE();SPALTE()))="")"
geht notfalls:

Code: Alles auswählen

tmp = "UND(WOCHENTAG(INDIREKT(ADRESSE(6;SPALTE()));2)>5;INDIREKT(ADRESSE(ZEILE();SPALTE()))=" & CHR(34) & CHR(34) & ")"
Zellformat(1).Value = tmp
aber ich weiß nicht ob das das Problem ist, ob die Formel hingegen das Richtige tut habe ich mir auf die Schnelle nicht angesehen.



Gruß
Stephan

P.S.
ich habe einen Deiner posts gelöscht, nach schnellem Überfliegen waren beide identisch und damit doppelt. Habe ich mich geirrt, dann ist das mein Fehler, es war hingegen keine Zensur :wink:
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: autom.Formatierung-Veränderungder Hintergrundfarbe beiEintra

Beitrag von Karolus »

Hallo Stephan

Danke für den Tip,
die "-Zeichen hatten zwar auch Probleme gemacht, aber auch nach Korrektur funktionert es nicht :

per Makro, gleichzeitig oder auch hintereinander Zellinhalts-bedingungen und Formel-bedingungen einzutragen, das jeweils zuletzt ausgeführte überschreibt zwar nicht die Bedingungen, aber die zuerst eingetragenen Bedingungen wirken nicht mehr.
Damit die Formelbedingung wirksam wird muss ich zusätzlich den Menü-dialog--->bed. Formatierung aufrufen und bestätigen.

Gruß Karo

Ps. Das Löschen des Doppelposts ist ok. Ich hatte hier Probleme mit der Verbindung und konnte es selbst nicht löschen.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: autom.Formatierung-Veränderungder Hintergrundfarbe beiEintra

Beitrag von Stephan »

Damit die Formelbedingung wirksam wird muss ich zusätzlich den Menü-dialog--->bed. Formatierung aufrufen und bestätigen.
Könnte es sein das dafür das Setzen von .setSourcePosition(CellAdresse) nötig ist?
Ich habe mich mit der entsprechenden Eigenschaft noch nicht beschäftigt (habe momentan auch keine Zeit das zu tun) und bin deshalb auch noch nicht an Probleme gestoßen. Gefragt habe ich mich aber schon früher nach der Notwendigkeit der Angabe dieser Eigenschaft, die ja über die GUI (Format-Bedingte Formatierung) nicht separat beeinflusst werden kann.
Vielleicht ist das ein Ansatz?

Wäre natürlich auch OK wenn Du mir sagst das ich damit falsch liege.


Gruß
Stephan
Antworten