Bedingte Formatierung
Moderator: Moderatoren
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Bedingte Formatierung
Ihr Lieben,
noch drei Probleme:
1. kann man per Makro eine bedingte Formatierung erstellen? Mein Makro erzeugt neue Calc Dateien. Ich möchte erreichen, dass sich Zellen grün färben wenn ein Wert eingegeben wird.
2. Für diese Grünfärbung muss ich auf meinem Computer ja eine Formatvorlage erstellen. Die obengenannten Dateien muss ich aber verteilen. Wenn die Empfänger diese Formatvorlage nicht haben, geht das nicht ... oder doch?
3. Meine Datenempfänger nutzen dann wahrscheinlich auch noch Excel ... dann geht das gar nicht mehr... oder?
Viele Grüße
Pit
noch drei Probleme:
1. kann man per Makro eine bedingte Formatierung erstellen? Mein Makro erzeugt neue Calc Dateien. Ich möchte erreichen, dass sich Zellen grün färben wenn ein Wert eingegeben wird.
2. Für diese Grünfärbung muss ich auf meinem Computer ja eine Formatvorlage erstellen. Die obengenannten Dateien muss ich aber verteilen. Wenn die Empfänger diese Formatvorlage nicht haben, geht das nicht ... oder doch?
3. Meine Datenempfänger nutzen dann wahrscheinlich auch noch Excel ... dann geht das gar nicht mehr... oder?
Viele Grüße
Pit
Re: Bedingte Formatierung
Hallo
1. Ja, sieh nach bei Dannenhöfer.
2. Eine Formatvorlage ist Bestandteil der Datei !
3. Ausprobieren
Gruß Karo
1. Ja, sieh nach bei Dannenhöfer.
2. Eine Formatvorlage ist Bestandteil der Datei !
3. Ausprobieren
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)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Re: Bedingte Formatierung
Lieber Carolus,
vielen dank!
Grüße
Pit
vielen dank!
??? Wer ?Karolus hat geschrieben: Ja, sieh nach bei Dannenhöfer.
Grüße
Pit
Re: Bedingte Formatierung
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Bedingte Formatierung
Hallo,
Beigfügt mal ein Code dessen Ursprung von Karolus ist.
Der Code erzeugt zunächst eine Pseudozelle mit Wert und Hintergrundfarbe aus der dann eine Zellvorlage generiert wird.
Danach wir die BF den vorgegebenen Zellbereichen zugewiesen. Anschliessend wird die Pseudozelle zurückgesetzt.
Viel Erfolg.
Jürgen
Pit erzeugt eine neue Datei in der er die BF erstellen möchte.Karolus hat geschrieben:Eine Formatvorlage ist Bestandteil der Datei !
erikafuchs hat geschrieben: Mein Makro erzeugt neue Calc Dateien. Ich möchte erreichen, dass sich Zellen grün färben wenn ein Wert eingegeben wird.
Beigfügt mal ein Code dessen Ursprung von Karolus ist.

Der Code erzeugt zunächst eine Pseudozelle mit Wert und Hintergrundfarbe aus der dann eine Zellvorlage generiert wird.
Danach wir die BF den vorgegebenen Zellbereichen zugewiesen. Anschliessend wird die Pseudozelle zurückgesetzt.
Code: Alles auswählen
Global iTab as Integer
Global oDocument as object
Global oCell as object
Global oPseudoCell as String
Sub bedingteFormatierung
oDocument = ThisComponent
iTab = 0 'Tabellenblattindex
oPseudoCell = "E5"
osheet = oDocument.sheets(iTab)
oCell = osheet.getcellRangebyName(oPseudoCell)
oCell.value = 6
oCell.cellbackcolor = 4057917
oDocument.CurrentController.Select(oCell)
neuVorlageausSelektion(oCell.value)
oDocument.CurrentController.Select(-1)
dim ibereich as variant
ibereich() = array("A1:A3","C1:C3")'Zellbereiche für BF
for i = 0 to ubound(ibereich())
bereich = oDocument.sheets(iTab).getcellrangebyname(ibereich(i)).getrangeaddress
formatierung(bereich,iTab)
next i
oCell.clearContents(255)'Reset Pseudozelle
msgbox "Die Kürzel sind übertragen und die bedingte Formatierung ist eingerichtet. ", 68, " Bestätigung"
end sub
function formatierung(bereich,tabindex)
dim BedingtFormat as Object
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"
for sp = erstSp to endSpa
for ze = erstzei to endZei
BedingtFormat = oDocument.sheets(tabindex).getcellbyPosition(sp,ze).ConditionalFormat
ocell2 = thisComponent.sheets(tabindex).getcellRangebyName(oPseudoCell).string
Zellformat(1).value = ocell2
Zellformat(2).value = ocell2
BedingtFormat.addNew(Zellformat())
thiscomponent.sheets(tabindex).getcellbyPosition(sp,ze).ConditionalFormat = BedingtFormat
next ze
next sp
end function
function neuVorlageausSelektion(vorlagenname as string)
dim document as object
dim dispatcher as object
document = oDocument.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Param"
args1(0).Value = vorlagenname
args1(1).Name = "Family"
args1(1).Value = 2
dispatcher.executeDispatch(document, ".uno:StyleNewByExample", "", 0, args1())
end function
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
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Re: Bedingte Formatierung
Lieber Karo,
Lieber Jürgen
danke, da muss ich mich jetzt erstmal durcharbeiten.
Grüße von
Pit
wieder was dazugelernt!
Lieber Jürgen
danke, da muss ich mich jetzt erstmal durcharbeiten.
Grüße von
Pit
Re: Bedingte Formatierung
Hallo
Gruß Karo
Oh - den Senf hab ich mal zusammengestopft - hoffentlich hab ich mich gebessert.Beigfügt mal ein Code dessen Ursprung von Karolus ist.
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)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Re: Bedingte Formatierung
Lieber Jürgen, lieber Carolus,
ich hoffe Ihr beobachtet diese Frage noch. Vielen Dank erstmal. Ich habe zwar keine Ahnung warum man zuerst eine Pseudozelle erstellen muss und diese dann wieder löschen ... aber es funktioniert schon ... ansatzweise. Leider konnte ich den Code noch nicht so anpassen dass er in meinem Code macht was er soll. Problematisch ist
1. ich weiss nicht was diese beiden Zeilen bewirken:
3. Hier müsste man doch auch einen anderen Wert eingeben können:
4. Warum ist das eine Bereich und nicht eine Zelle:
Es wäre schön wenn Ihr mir da weiterhelfen könntet!
Grüße
Pit
ich hoffe Ihr beobachtet diese Frage noch. Vielen Dank erstmal. Ich habe zwar keine Ahnung warum man zuerst eine Pseudozelle erstellen muss und diese dann wieder löschen ... aber es funktioniert schon ... ansatzweise. Leider konnte ich den Code noch nicht so anpassen dass er in meinem Code macht was er soll. Problematisch ist
1. ich weiss nicht was diese beiden Zeilen bewirken:
2. ich müsste den Bereich als Position angeben und nicht als Name, das gelingt mir noch nicht zufriedenstellend:oDocument.CurrentController.Select(oCell)
...
oDocument.CurrentController.Select(-1)
könnte man nicht in der roten Zeile den gewünschten Bereich angeben und die Hälfte vom Rest weglassen? (Mir gelingt es allerdings nicht ... ich bin aber blutiger Anfänger)ibereich() = array("A1:A3","C1:C3")'Zellbereiche für BF
for i = 0 to ubound(ibereich())
bereich = oDocument.sheets(iTab).getcellrangebyname(ibereich(i)).getrangeaddress
formatierung(bereich,iTab)
next i
....
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"
for sp = erstSp to endSpa
for ze = erstzei to endZei
BedingtFormat = oDocument.sheets(tabindex).getcellbyPosition(sp,ze).ConditionalFormat
ocell2 = thisComponent.sheets(tabindex).getcellRangebyName(oPseudoCell).string
Zellformat(1).value = ocell2
Zellformat(2).value = ocell2
BedingtFormat.addNew(Zellformat())
thiscomponent.sheets(tabindex).getcellbyPosition(sp,ze).ConditionalFormat = BedingtFormat
next ze
next sp
3. Hier müsste man doch auch einen anderen Wert eingeben können:
wenn ich hier z.B. "AA0" eingebe, klappt das nicht.oPseudoCell = "E5"
4. Warum ist das eine Bereich und nicht eine Zelle:
?oCell = osheet.getcellRangebyName(oPseudoCell)
Es wäre schön wenn Ihr mir da weiterhelfen könntet!
Grüße
Pit
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Re: Bedingte Formatierung
Falls sich das noch jemand ansieht:
Jetzt klappt alles. Ich habe den Code verkürzt:
... ich habe allerdings jetzt weiterhin keine Ahnung, warum ich die Schleife
nicht weglassen kann.
Nochmals Dank
Pit
Jetzt klappt alles. Ich habe den Code verkürzt:
Code: Alles auswählen
Sub bedingteFormatierung
dim BedingtFormat as Object
dim Zellformat(3) as New com.sun.star.beans.PropertyValue
oPseudoCell = "K2"
oCell = outSheet.getcellRangebyName(oPseudoCell)
oCell.value = 1
oCell.cellbackcolor = 4057917
LDat.CurrentController.Select(oCell)
neuVorlageausSelektion(oCell.value)
LDat.CurrentController.Select(-1)
Zellformat(0).Name = "Operator"
Zellformat(0).value = com.sun.star.sheet.ConditionOperator.GREATER_EQUAL
Zellformat(1).Name = "Formula1"
Zellformat(2).Name = "StyleName"
for sp =q to q
for ze = startzeile to outzeile
BedingtFormat = outSheet.getcellbyPosition(sp,ze).ConditionalFormat
ocell2 = outSheet.getcellRangebyName(oPseudoCell).string
Zellformat(1).value = ocell2
Zellformat(2).value = ocell2
BedingtFormat.addNew(Zellformat())
outSheet.getcellbyPosition(sp,ze).ConditionalFormat = BedingtFormat
next ze
next sp
oCell.clearContents(255)'Reset Pseudozelle
end sub
function neuVorlageausSelektion(vorlagenname as string)
dim document as object
dim dispatcher as object
document=zielFrame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Param"
args1(0).Value = vorlagenname
args1(1).Name = "Family"
args1(1).Value = 2
dispatcher.executeDispatch(document, ".uno:StyleNewByExample", "", 0, args1())
end function
Code: Alles auswählen
for sp =q to q
...
next sp
Nochmals Dank
Pit
Re: Bedingte Formatierung
Hallo
Und ich hab keine Ahnung wieso du...
...überhaupt benutzt ? - von mir hast du das nicht.
Karo
Und ich hab keine Ahnung wieso du...
Code: Alles auswählen
for sp =q to q
Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Re: Bedingte Formatierung
Lieber Caro,
in deinem Code heißt es:
... die Schleife brauche ich eigentlich nicht, da ich nur eine Spalte formatiere. Ich kann sie aber nicht weglassen, sonst läuft es nicht....?
Grüße
Pit
in deinem Code heißt es:
Code: Alles auswählen
for sp = erstSp to endSpa
...
next sp
Grüße
Pit
Re: Bedingte Formatierung
Aloha
Ersetze einfach die "sp"s im Code durch die von Dir gewünschte Spalte, dann kannst Du die Schleife auch weglassen.
Wenn Du den von Dir geposteten Code nicht veränderst abgesehen vom Löschen der äussersten Schleife, wird wohl das weitere Verwenden der Laufvariablen das Problem sein:erikafuchs hat geschrieben:... die Schleife brauche ich eigentlich nicht, da ich nur eine Spalte formatiere. Ich kann sie aber nicht weglassen, sonst läuft es nicht....?
Code: Alles auswählen
for ze = startzeile to outzeile
BedingtFormat = outSheet.getcellbyPosition(sp,ze).ConditionalFormat
(...)
outSheet.getcellbyPosition(sp,ze).ConditionalFormat = BedingtFormat
next ze
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Re: Bedingte Formatierung
Lieber DPunch,
du hast recht. Eigentlich wollte ich das Problem bei den ungelösten Rätseln ablegen. Ich habe meinen Code aber jetzt doch nochmal durchforstet und musste feststellen, dass ich ein "sp" nicht ersetzt habe. Auweh.
Dank und Grüße
Pit
du hast recht. Eigentlich wollte ich das Problem bei den ungelösten Rätseln ablegen. Ich habe meinen Code aber jetzt doch nochmal durchforstet und musste feststellen, dass ich ein "sp" nicht ersetzt habe. Auweh.
Dank und Grüße
Pit