Zellenfarbe automatisch ändern
Moderator: Moderatoren
-
- Beiträge: 6
- Registriert: Di, 26.12.2006 08:28
Zellenfarbe automatisch ändern
Ich möchte in einer Tabelle die Zellenfarbe automatisch ändern lassen.
Je nach Inhalt (hier Text z.B. Fritz, Franz u.s.w.) soll die Zelle eine bestimmte Farbe annehmen.
Mit der Formelvorlage `VORLAGE` komme ich nicht so richtig weiter.
Je nach Inhalt (hier Text z.B. Fritz, Franz u.s.w.) soll die Zelle eine bestimmte Farbe annehmen.
Mit der Formelvorlage `VORLAGE` komme ich nicht so richtig weiter.
Hallo
Erstelle zunächst eine neue Zellvorlage mit der gewünschten Hintergrundfarbe
(<F11>-Zellvorlage-neu).
Danach benutzt du ->Format->Bedingte Formatierung :
'Formel ist'
ISTTEXT(A1)
und darunter die gerade entworfene Zellvorlage auswählen.
Auf einen grösseren Zellbereich lässt sich diese bed. Formatierung einfach mit dem 'Pinsel' übertragen.
Gruß Karo
Erstelle zunächst eine neue Zellvorlage mit der gewünschten Hintergrundfarbe
(<F11>-Zellvorlage-neu).
Danach benutzt du ->Format->Bedingte Formatierung :
'Formel ist'
ISTTEXT(A1)
und darunter die gerade entworfene Zellvorlage auswählen.
Auf einen grösseren Zellbereich lässt sich diese bed. Formatierung einfach mit dem 'Pinsel' übertragen.
Gruß Karo
-
- Beiträge: 6
- Registriert: Di, 26.12.2006 08:28
Mehr als 3 Bedingungen
Danke dafür, das funktioniert schon mal sehr gut!
Wie kann ich mehr als 3 Bedingungen erstellen? In meinem Fall bedeutet das mehr als 3 Farben.
Wie kann ich mehr als 3 Bedingungen erstellen? In meinem Fall bedeutet das mehr als 3 Farben.
Hallo,
dazu must du die Funktion VORLAGE() verwenden. Mit dieser Funktion kannst du beliebig viele Farben (Zellvorlagen) zuweisen.
z.B:
=C3+VORLAGE(WENN(AKTUELL()>10;"Blassgelb";"weiß"))
färbt die Zelle C3 mit der Zellvorlage"Blassgelb" ein wenn der Inhalt größer als 10 ist. Ansonsten wird die Zellvorlage "weiß" zugewiesen.
Mehr dazu findest du in der Hilfe.
Viele Grüße
FranzX
-----------------------------------------------------------------
TIPP:OpenOffice.org Calc - Formeln und Funktionen
dazu must du die Funktion VORLAGE() verwenden. Mit dieser Funktion kannst du beliebig viele Farben (Zellvorlagen) zuweisen.
z.B:
=C3+VORLAGE(WENN(AKTUELL()>10;"Blassgelb";"weiß"))
färbt die Zelle C3 mit der Zellvorlage"Blassgelb" ein wenn der Inhalt größer als 10 ist. Ansonsten wird die Zellvorlage "weiß" zugewiesen.
Mehr dazu findest du in der Hilfe.
Viele Grüße
FranzX
-----------------------------------------------------------------
TIPP:OpenOffice.org Calc - Formeln und Funktionen
-
- Beiträge: 6
- Registriert: Di, 26.12.2006 08:28
Problem 1: ich schreibe die Formel in die Zelle und sobald ich was in die Zelle einfüge ist die Formel gelöscht.
Beschreibung der gewünschten Funktion: ich habe einen Dienstplan in den x Namen geschrieben werden. Jeder Name soll durch eine vorgegebene Farbe automatisch hinterlegt werden.
Mit der Bedingten Formatierung klappt das... allerdings nur bis 3 Personen!
Beschreibung der gewünschten Funktion: ich habe einen Dienstplan in den x Namen geschrieben werden. Jeder Name soll durch eine vorgegebene Farbe automatisch hinterlegt werden.
Mit der Bedingten Formatierung klappt das... allerdings nur bis 3 Personen!
Hallo Holger,
schau Dir dieses Thread mal an:
viewtopic.php?t=5645&highlight=bedingte+formatierung
Vieleicht hilft Dir das weiter.
Viel Erfolg
Jürgen
schau Dir dieses Thread mal an:
viewtopic.php?t=5645&highlight=bedingte+formatierung
Vieleicht hilft Dir das weiter.
Viel Erfolg
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Das ist normal. Wenn Du den bisherigen Inhalt durch einen neuen ersetzt. Du musst den eigentlichen Inhalt der Zelle ergänzen durch +VORLAGE("Vorlagenname") bzw, wenn der Inhalt keine Zahl ist durch: &T(VORLAGE("Vorlagenname")).HolgerSiefert hat geschrieben:Problem 1: ich schreibe die Formel in die Zelle und sobald ich was in die Zelle einfüge ist die Formel gelöscht.
Am besten, Du legst in einer unbenutzten Tabelle eine Liste an:Beschreibung der gewünschten Funktion: ich habe einen Dienstplan in den x Namen geschrieben werden. Jeder Name soll durch eine vorgegebene Farbe automatisch hinterlegt werden.
Mit der Bedingten Formatierung klappt das... allerdings nur bis 3 Personen!
in Spalte A die Namen der Mitarbeiter, daneben jeweils den Namen der anzuwendenden Zellvorlage. Gut ist auch, wenn Du diese zwei Spalten ganz markierst und über Einfügen/Namen einen Namen zuordnest, dann kannst Du Dich später mit diesem Namen auf sie referenzieren, das ist einfacher als der Zellbereich. Wenn ich mal annehmme, der Bereich mit den Namen und Vorlagen heisst 'Vorlagennamen', dann kannst Du eine Vorlage daraus in jeder beliebigen Zelle so zuordnen:
="Name des Mitarbeiters"&SVERWEIS("Name des Mitarbeiters";Vorlagenname;2;0).
Mehr dazu im wiki
-
- Beiträge: 6
- Registriert: Di, 26.12.2006 08:28
Danke für die Tipps. Das hilft mir jedoch nicht weiter, da ich eine Kalender (hier Dienstplan) habe und da schreibe ich dann die Namen rein. Wenn dann am Montag z.B. Holger eingetragen wird soll die Zelle grün werden und wenn z.B. Franz eingetragen wird soll die Zelle blau werden.
Mit den bisherigen Tipps krieg ich das nicht hin!
Mit den bisherigen Tipps krieg ich das nicht hin!
Hallo Holger
Vielleicht hilft dir folgendes Makrobeispiel, es setzt die Hintergrundfarbe oder auch die Zellvorlage abhängig vom Inhalt der Zellen in einem selektierten Bereich.
Gruß Karo
Vielleicht hilft dir folgendes Makrobeispiel, es setzt die Hintergrundfarbe oder auch die Zellvorlage abhängig vom Inhalt der Zellen in einem selektierten Bereich.
Code: Alles auswählen
sub bereichshintergrund
odoc = thisComponent
osheet = odoc.currentcontroller.activesheet
obereich = odoc.getcurrentselection()
StartSp = obereich.rangeAddress.startColumn
StartZe = obereich.rangeAddress.startRow
EndSp = obereich.rangeAddress.EndColumn
EndZe = obereich.rangeAddress.EndRow
msgbox (startSp)
for n = StartSp to Endsp
for m = StartZe to EndZe
ocell = osheet.getCellByPosition(n,m)
if oCell.string = "" then oCell.CellBackColor = -1 'Farbe zurücksetzen
if oCell.string = "Fritz" then oCell.CellBackColor = RGB(0,255, 0) 'Direkte Zuweisung von Hintergrundf.
if oCell.string = "Franz" then oCell.CellBackColor = RGB(250,255, 0)
if oCell.string = "Karl-Otto" then oCell.Cellstyle = "deinVorlagenname" 'Zuweisung einer Zellvorlage
' if oCell.string = "A" then oCell.CellBackColor = RGB(255,0, 0)
' if oCell.string = "B" then oCell.CellBackColor = RGB(0,0,255)
' if oCell.string = "C" then oCell.CellBackColor = RGB(0,50,55)
next m
next n
end sub
-
- Beiträge: 6
- Registriert: Di, 26.12.2006 08:28
Hallo Holger
(->extras->Anpassen-'Ereignisse'--'Geändert-Status wurde geändert' )
Ich würde es daher mit einer Schaltfläche im Dokument manuell starten.
Gruß Karo
"Automatisch" geht es zunächst nur bei der ersten Änderung im Kalender nach dem offnen.Wie kann das Makro nun automatisch gestartet werden, sobald ein Name in den Kalender eingetragen wird?
(->extras->Anpassen-'Ereignisse'--'Geändert-Status wurde geändert' )
Ich würde es daher mit einer Schaltfläche im Dokument manuell starten.
Gruß Karo
Man müßte das Makro im Prinzip über einen Listener des Typs XSelectionChangeListener starten damit es automatisch arbeitet.
Da aber nun ohnehin bereits ein Makro zur Lösung der Aufgabe dient, würde ich mir diesen Aufwand sparen und stattdessen gleich die benötigten bedingten Formatierungen einmalig per Makro eintragen, dann kümmert sich OOo automatisch um den Rest.
Für eine bedingte Formatierung mit 10 Bedingungen beispielsweise so:
Hinweis:
*die Zellformatvorlagen mit Namen klaus ... dirk müssen erstellt werden bevor(!) das Makro gestartet wird.
*das Makro arbeitet nur innerhalb eines geschlossenenen Zellbereiches (oder einer einzelnen Zelle) der vor Start des Makros markiert sein muß
Gruß
Stephan
Da aber nun ohnehin bereits ein Makro zur Lösung der Aufgabe dient, würde ich mir diesen Aufwand sparen und stattdessen gleich die benötigten bedingten Formatierungen einmalig per Makro eintragen, dann kümmert sich OOo automatisch um den Rest.
Für eine bedingte Formatierung mit 10 Bedingungen beispielsweise so:
Code: Alles auswählen
Sub bedingte_zellformatierung()
'Kriterien und Vorlagen definieren
Dim kuv(1, 9) As String
'Bedingungen
kuv(0, 0) = "Klaus"
kuv(0, 1) = "Peter"
kuv(0, 2) = "Hans"
kuv(0, 3) = "Martin"
kuv(0, 4) = "Uwe"
kuv(0, 5) = "Michael"
kuv(0, 6) = "Dieter"
kuv(0, 7) = "Wilfried"
kuv(0, 8) = "Gerd"
kuv(0, 9) = "Dirk"
'Vorlagennamen
kuv(1, 0) = "klaus"
kuv(1, 1) = "peter"
kuv(1, 2) = "hans"
kuv(1, 3) = "martin"
kuv(1, 4) = "uwe"
kuv(1, 5) = "michael"
kuv(1, 6) = "dieter"
kuv(1, 7) = "wilfried"
kuv(1, 8) = "gerd"
kuv(1, 9) = "dirk"
Dim bedingtes_format as Object
range = ThisComponent.GetCurrentSelection.rangeAddress
With range
a_s = .startColumn
a_z = .startRow
e_s = .EndColumn
e_z = .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"
blatt = ThisComponent.CurrentController.ActiveSheet
For i = a_s to e_s
For j = a_z to e_z
bedingtes_format = blatt.getCellByPosition(i, j).ConditionalFormat
For k = 0 To 9
zellformat(1).Value = CHR(34) & kuv(0, k) & CHR(34)
zellformat(2).Value = kuv(1, k)
bedingtes_format.addNew( zellformat() )
Next k
blatt.getCellByPosition(i, j).ConditionalFormat = bedingtes_format
Next j
Next i
Msgbox "Fertig - bedingte Zellformatierungen wurden eingetragen."
End Sub
Hinweis:
*die Zellformatvorlagen mit Namen klaus ... dirk müssen erstellt werden bevor(!) das Makro gestartet wird.
*das Makro arbeitet nur innerhalb eines geschlossenenen Zellbereiches (oder einer einzelnen Zelle) der vor Start des Makros markiert sein muß
Gruß
Stephan