[GELÖST] Alle Zellen einer bestimmten Farbe automatisch markieren
Moderator: Moderatoren
-
- **
- Beiträge: 21
- Registriert: Mi, 10.02.2016 17:35
Re: [GELÖST] Alle Zellen einer bestimmten Farbe automatisch markieren
nein - das war nicht meine Intention!
Es sollte nur die Möglichkeit aufzeigen, dass manche vielleicht zu voreilig sind und meinen, dass da was nicht funktioniert. Es braucht einfach auch Rechenleistung und damit vermutlich auch Zeit.
Lieber 15 Sekunden als Tage weise alles manuell umschreiben
LG Jörg
Es sollte nur die Möglichkeit aufzeigen, dass manche vielleicht zu voreilig sind und meinen, dass da was nicht funktioniert. Es braucht einfach auch Rechenleistung und damit vermutlich auch Zeit.
Lieber 15 Sekunden als Tage weise alles manuell umschreiben
LG Jörg
Re: [GELÖST] Alle Zellen einer bestimmten Farbe automatisch markieren
Hallo, ihr Lieben,
Mein Zwischenkommentar war nicht wegen der Zeit (viel oder wenig) entstanden, denn meine kleine Probendatei braucht keine Zeit auf meinem Rechner. Mein Irrung entstand in zwei Beobachtungen:
1. Bei der "leeren" (=standard) Zelle war ich noch dem Glauben verfallen, dass das Makro bereits mich nötigt, eine Formatvorlage zu erzeugen.
2. Beim Versuch mit grün irritierte mich, dass meine eine "markierte" (eigentlich nur ausgewählte) Zelle (die einzige mit Umrandung) blieb. Zwar sprang eine Umrandung zur anderen Grünen, aber ich bemerkte nicht die Gruppenbildung. Erst bei dem letzten Versuch fiel mir auf, dass das grün beider grünen Zellen irgendwie dunkler aussah, als zuvor. Das war dann auch für mich der Hinweis auf die gruppierte Markierung, nur leider sehr dezent und für mich im Kopf zu spät.
Letztendlich hat dann j alles geklappt, wie gewünscht und mich sehr beeindruckend. Hut ab.
Pit
Mein Zwischenkommentar war nicht wegen der Zeit (viel oder wenig) entstanden, denn meine kleine Probendatei braucht keine Zeit auf meinem Rechner. Mein Irrung entstand in zwei Beobachtungen:
1. Bei der "leeren" (=standard) Zelle war ich noch dem Glauben verfallen, dass das Makro bereits mich nötigt, eine Formatvorlage zu erzeugen.
2. Beim Versuch mit grün irritierte mich, dass meine eine "markierte" (eigentlich nur ausgewählte) Zelle (die einzige mit Umrandung) blieb. Zwar sprang eine Umrandung zur anderen Grünen, aber ich bemerkte nicht die Gruppenbildung. Erst bei dem letzten Versuch fiel mir auf, dass das grün beider grünen Zellen irgendwie dunkler aussah, als zuvor. Das war dann auch für mich der Hinweis auf die gruppierte Markierung, nur leider sehr dezent und für mich im Kopf zu spät.
Letztendlich hat dann j alles geklappt, wie gewünscht und mich sehr beeindruckend. Hut ab.
Pit
win11 - Avira - LO 24.8.4.2 (X86_64)
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Re: [GELÖST] Alle Zellen einer bestimmten Farbe automatisch markieren
Hallo, @Stephans Makro funktioniert einwandfrei, auch wenn es auf den ersten Klick scheinbar "nichts tut". Ich möchte den TE nur darauf aufmerksam machen, dass man die neue HG Farbe nicht nur mit der Gießkanne zuweisen kann, sondern auch gleich über eine vorher erstellte Zellen-Formatvorlage.
Das scheint mir wesentlich flexibler, da man damit hinterher bequem auch andere Attribute ändern kann.
Gruß, Helmut
Das scheint mir wesentlich flexibler, da man damit hinterher bequem auch andere Attribute ändern kann.
Gruß, Helmut
MX-Linux 23 KDE, Linux Mint 21 Cinnamon
Re: [GELÖST] Alle Zellen einer bestimmten Farbe automatisch markieren
Das ist eine eingeschränkte Wahrheit, denn man kann die nun markierten unmittelbar einer neuen unbenannten Vorlage zuführen, die man dann erst benennt.Helmut_S hat geschrieben: Sa, 28.09.2019 17:12 ... dass man die neue HG Farbe nicht nur mit der Gießkanne zuweisen kann, sondern auch gleich über eine vorher erstellte Zellen-Formatvorlage.
Das hatte ich probiert!
win11 - Avira - LO 24.8.4.2 (X86_64)
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
-
- **
- Beiträge: 21
- Registriert: Mi, 10.02.2016 17:35
Re: [GELÖST] Alle Zellen einer bestimmten Farbe automatisch markieren
Das ist ja auch mein Ansinnen. Formatvorlagen existieren nun ganz simpel wie "01 gelb", "02 blau" etc und die mittels des Makros markierten Zellen kann ich nun einfach den Farben der Formatvorlagen zuordnen und dann ggf. auch mal ändern, wenn andere Farben auf dem Plan stehen.Helmut_S hat geschrieben: Sa, 28.09.2019 17:12 ....Ich möchte den TE nur darauf aufmerksam machen, dass man die neue HG Farbe nicht nur mit der Gießkanne zuweisen kann, sondern auch gleich über eine vorher erstellte Zellen-Formatvorlage.
Das scheint mir wesentlich flexibler, da man damit hinterher bequem auch andere Attribute ändern kann.
Gruß, Helmut
Die aktuellen Web-Briefe existieren sowieso nur noch mit Formatvorlagen-Zellen.
LG, Jörg
Re: [GELÖST] Alle Zellen einer bestimmten Farbe automatisch markieren
Moin,
Ich hätte da inzwischen noch eine Lösung nach meiner oben vorgeschlagenen Idee zu bieten, Beispiel anbei.
Das Makro ermittelt alle im markierten Zellbereich vorkommenden Farben, und legt für jede Farbe ein Zellvorlage an.
Dann grast es alle markierten Zellen erneut ab, liest die Zellhintergrundfarbe aus, löscht sie aus der jeweiligen Zelle und weist ihr die Zellvorlage mit der eben gelöschten Zellhintergrundfarbe zu.
Nachdem man also ein Muster einmal mit diesem Makro bearbeitet hat, kann man jede Farbe über die Zellvorlage in allen betroffenen Zellen mit einem Mal ändern.
Zelle anklicken; F11 drücken->aktive Zellvorlage ist selektiert, Rechtsklick->Ändern...->Hintergrund...neue Farbe einstellen, fertig.
Gruß R
Ich hätte da inzwischen noch eine Lösung nach meiner oben vorgeschlagenen Idee zu bieten, Beispiel anbei.
Das Makro ermittelt alle im markierten Zellbereich vorkommenden Farben, und legt für jede Farbe ein Zellvorlage an.
Dann grast es alle markierten Zellen erneut ab, liest die Zellhintergrundfarbe aus, löscht sie aus der jeweiligen Zelle und weist ihr die Zellvorlage mit der eben gelöschten Zellhintergrundfarbe zu.
Nachdem man also ein Muster einmal mit diesem Makro bearbeitet hat, kann man jede Farbe über die Zellvorlage in allen betroffenen Zellen mit einem Mal ändern.
Zelle anklicken; F11 drücken->aktive Zellvorlage ist selektiert, Rechtsklick->Ändern...->Hintergrund...neue Farbe einstellen, fertig.
Code: Alles auswählen
Sub replaceBackColorByStyle
oCellStyles = Thiscomponent.Stylefamilies.CellStyles
oCellformatranges = thiscomponent.currentselection.Cellformatranges
ncounter = 0
for i = 0 to oCellformatranges.count -1
oNewStyle = THISCOMPONENT.Createinstance("com.sun.star.style.CellStyle")
oNewStyle.Name = ""+oCellformatranges(i).Cellbackcolor
if not oCellstyles.hasByName(""+oCellformatranges(i).Cellbackcolor,oNewStyle) then
oCellstyles.insertByName(""+oCellformatranges(i).Cellbackcolor,oNewStyle)
oNewStyle.CellBackColor = oCellformatranges(i).Cellbackcolor
ncounter = nCounter + 1
endif
next i
oCellrangeaddress = ThisComponent.currentselection.Rangeaddress
oSheet = ThisComponent.Sheets(oCellrangeaddress.Sheet)
for j = oCellrangeaddress.startcolumn to oCellrangeaddress.Endcolumn
for k = oCellrangeaddress.startrow to oCellrangeaddress.Endrow
oCell = oSheet.getcellbyposition (j,k)
nColor = oCell.Cellbackcolor
oCell.Cellbackcolor = -1
oCell.CellStyle = ""+nColor
next k
next j
msgbox ("Es wurden "+ncounter+" Zellvorlagen erstellt und auf die ausgewählten Zellen angewendet",64,"Fertig")
End Sub
Gruß R
- Dateianhänge
-
- InsertCellstyles.ods
- (10.47 KiB) 139-mal heruntergeladen
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
-
- **
- Beiträge: 21
- Registriert: Mi, 10.02.2016 17:35
Re: [GELÖST] Alle Zellen einer bestimmten Farbe automatisch markieren
....FeinF3K Total hat geschrieben: Sa, 28.09.2019 19:04 Moin,
Ich hätte da inzwischen noch eine Lösung nach meiner oben vorgeschlagenen Idee zu bieten, Beispiel anbei.
Das Makro ermittelt alle im markierten Zellbereich vorkommenden Farben, und legt für jede Farbe ein Zellvorlage an.
Dann grast es alle markierten Zellen erneut ab, liest die Zellhintergrundfarbe aus, löscht sie aus der jeweiligen Zelle und weist ihr die Zellvorlage mit der eben gelöschten Zellhintergrundfarbe zu.
Nachdem man also ein Muster einmal mit diesem Makro bearbeitet hat, kann man jede Farbe über die Zellvorlage in allen betroffenen Zellen mit einem Mal ändern.
Zelle anklicken; F11 drücken->aktive Zellvorlage ist selektiert, Rechtsklick->Ändern...->Hintergrund...neue Farbe einstellen, fertig.
Gruß R

nein, Scherz beiseite, eine fantastische Idee! Ich brauche sie hier nicht mehr, da ich nun alle Briefe "konvertieren" konnte.
Den Code habe ich mir trotzdem abgesichert, allein schon um zu studieren, was dabei gerade abläuft.
Vlt probiere ich es auch selbst mal mit dem programmieren...
Danke Euch allen fürs Kopfzerbrechen und ich hoffe, dass noch weitere User diese spezielle Sache nutzen können.
LG, Jörg
Re: [GELÖST] Alle Zellen einer bestimmten Farbe automatisch markieren
hier mit Fortschrittsanzeige:
Gruß
Stephan
Code: Alles auswählen
Dim wv_fortschritt_model As Object
Dim wv_fortschritt As Object
Sub Main
Dim az As Long
Dim bz As Long
If ThisComponent.getCurrentSElection.supportsService("com.sun.star.sheet.SheetCell") Then
akt_farbe = Thiscomponent.getCurrentSelection.CellBackColor
Else
Msgbox "Bitte nur EINE Zelle markieren."
End If
blatt = ThisComponent.CurrentController.ActiveSheet
cur = blatt.CreateCursor
cur.GotoEndOfUsedArea(True)
letzte_zeile = cur.RangeAddress.EndRow
letzte_spalte = Cur.RangeAddress.EndColumn
az = (letzte_zeile+1)*(letzte_spalte+1)
bz = 0
bereiche = ThisComponent.CreateInstance("com.sun.star.sheet.SheetCellRanges")
'Fortschrittsdialog
fortschrittsanzeige
For i = 0 to letzte_zeile
For j = 0 To letzte_spalte
If blatt.getCellByPosition(j, i).CellBackColor = akt_farbe Then
bereiche.addRangeAddress(blatt.getCellByPosition(j, i).RangeAddress, False)
End If
bz = bz + 1
wv_fortschritt.Model.getByName("warten1").Label = bz & " von " & az & " Zellen geprüft."
Next j
Next i
ThisComponent.CurrentController.select(bereiche)
wv_fortschritt.setVisible(False)
Msgbox "Fertig."
End Sub
Sub fortschrittsanzeige()
wv_fortschritt_model = CreateUnoService("com.sun.star.awt.UnoControlDialogModel")
wv_fortschritt_model.setPropertyValue("Width", 150)
wv_fortschritt_model.setPropertyValue("Height", 20)
wv_fortschritt_model.SetPropertyValue("Title","Bitte etwas Geduld")
oMod_warten = wv_fortschritt_model.createInstance("com.sun.star.awt.UnoControlFixedTextModel")
With oMod_warten
.setPropertyValue("Name","warten1")
.setPropertyValue("PositionX",5) '192
.setPropertyValue("PositionY",5)
.setPropertyValue("Width",140)
.setPropertyValue("Height",13)
.setPropertyValue("Label","Bitte etwas Geduld...")
End With
wv_fortschritt_model.insertByName("warten1", oMod_warten)
wv_fortschritt = CreateUnoService("com.sun.star.awt.UnoControlDialog")
wv_fortschritt.setModel(wv_fortschritt_model)
oWin2 = CreateUnoService("com.sun.star.awt.Toolkit")
wv_fortschritt.createPeer(oWin2, null)
wv_fortschritt.setVisible(True)
End Sub
Gruß
Stephan
Re: [GELÖST] Alle Zellen einer bestimmten Farbe automatisch markieren
Leider nicht fehlerfrei.F3K Total hat geschrieben: Sa, 28.09.2019 19:04 Zelle anklicken; F11 drücken->aktive Zellvorlage ist selektiert, Rechtsklick->Ändern...->Hintergrund...neue Farbe einstellen, fertig.
Auf meine o. angegebene Beispieldatei angewandt und das erste oder zweite grüne Feld angewandt:
Es wird nur dieses eine Feld mit einer neuen (mit kuriosem Zahlennamen versehenen) Formatvorlage versehen, die anderen grünen nicht. Auch bleiben die beiden anderen Farben mit Formatvorlage unangetastet.
Entweder werden beide Makros kombiniert oder die Nutzung ist wertlos.
Pit
win11 - Avira - LO 24.8.4.2 (X86_64)
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Re: [GELÖST] Alle Zellen einer bestimmten Farbe automatisch markieren
Klasse Pit,
"Herr Lehrer, ich weiß was, im Keller brennt Licht"

Du hast in deiner Datei schon Formatvorlagen angewendet. Eine Zelle die per Formatvorlage formatiert ist, hat keine "harte Hintergrundfarbe", daher kann mein Makro auch keine Farbe auslesen um dann eine neu kreierte Zellvorlage zuzuweisen.
Versuch es mit einer Datei, in der keine Zelle per Formatvorlage formatiert sind, wie es Longyearbyen geschrieben hat, z.B. meiner Beispieldatei.
Das Makro macht GENAU das was es soll.
PS: der kryptische Vorlagenname entspricht der Farbe als Longinteger-Zahl
R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: [GELÖST] Alle Zellen einer bestimmten Farbe automatisch markieren
Ich weiß Deine Fähigkeiten zu schätzen, brauchst mich also nicht lächerlich zu machen.F3K Total hat geschrieben: So, 29.09.2019 18:51 Du hast in deiner Datei schon Formatvorlagen angewendet. Eine Zelle die per Formatvorlage formatiert ist, hat keine "harte Hintergrundfarbe", daher kann mein Makro auch keine Farbe auslesen um dann eine neu kreierte Zellvorlage zuzuweisen.
Ich möchte bemerken, dass in meiner Beispieldatei, als ich sie hochludt, zwar 2 Farben mit Formatvorlagen drin waren, nämlich rot und gelb, nicht aber die grüne!
Nur deshalb war es mir möglich das erste hier im thread vorgestellte Makro auszuprobieren.
Da ich nur ein kleines Licht bin ohne große Kenntnisse, dass nur Klarheit haben will, werde ich jetzt alles nochmal probieren, sowohl was Du behauptest und auch noch mal was ich behauptete.
Wenn nämlich Dein Makro ausschliesslich funktioniert, wenn gar keine Farben mit Formatvorlagen drin sind, dann muß das vorher als Bedingung bekannt sein. Ich selbst hatte vermutet, daß das egal wäre, denn es ging ja nur um Erkennung hart formatierter.
NACHTRAG: Ich sehe, meine Beispieldatei ist im thread verschwunden???
win11 - Avira - LO 24.8.4.2 (X86_64)
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Re: [GELÖST] Alle Zellen einer bestimmten Farbe automatisch markieren
ist hier nicht die Datei:NACHTRAG: Ich sehe, meine Beispieldatei ist im thread verschwunden???
viewtopic.php?f=2&t=73401#p285593
zumindest bei mir klappt auch der Download.
Gruß
Stephan
Re: [GELÖST] Alle Zellen einer bestimmten Farbe automatisch markieren
@ F3K Total
Also meine Beispieldatei mit deinem Makro: 1. A1 (=leer) fokussiert, Makro: Es resultiert:
eine neue Vorlage "-1". Eine leere Zelle mit -1-Vorlage formatiert : keine Farbe,
die grüne Farbe ist noch ohne Formatzuweisung so wie zuvor
2. C3 (=grün) fokussiert : Es entsteht eine neuer Vorlage "10092441". Eine leere Zelle damit formatiert: sie wird grün wie die anderen,
aber jede andere grüne außer C3 haben wie zuvor die Standardvorlage.
3. D8 (=die letzte grüne) fokussiert: Dasselbe Resultat: Nur diese Zelle erhält eine neue Formatvorlage mit der richtigen Eigenschaft, die anderen grünen nicht.
Die Beispieldatei ohne jede Formatvorlage für Hintergrundfarbe:
4. A1 fokussiert: Dasselbe wie bei 1.
5. Die gesamte Tabelle markiert: Kommt nicht zum Abschluß! Man kann merhfach speichern... , aber es werden tatsächlich 4 Formatvorlagen erzeugt, aber ich erlebe nicht, dass die farbigen Zellen eine erhalten, sondern sie bleiben bei Mouse-over immer auf Standard.
Schließlich bekommt jeweils eine Zuweisung. Pit
Also meine Beispieldatei mit deinem Makro: 1. A1 (=leer) fokussiert, Makro: Es resultiert:
eine neue Vorlage "-1". Eine leere Zelle mit -1-Vorlage formatiert : keine Farbe,
die grüne Farbe ist noch ohne Formatzuweisung so wie zuvor
2. C3 (=grün) fokussiert : Es entsteht eine neuer Vorlage "10092441". Eine leere Zelle damit formatiert: sie wird grün wie die anderen,
aber jede andere grüne außer C3 haben wie zuvor die Standardvorlage.
3. D8 (=die letzte grüne) fokussiert: Dasselbe Resultat: Nur diese Zelle erhält eine neue Formatvorlage mit der richtigen Eigenschaft, die anderen grünen nicht.
Die Beispieldatei ohne jede Formatvorlage für Hintergrundfarbe:
4. A1 fokussiert: Dasselbe wie bei 1.
5. Die gesamte Tabelle markiert: Kommt nicht zum Abschluß! Man kann merhfach speichern... , aber es werden tatsächlich 4 Formatvorlagen erzeugt, aber ich erlebe nicht, dass die farbigen Zellen eine erhalten, sondern sie bleiben bei Mouse-over immer auf Standard.
Schließlich bekommt jeweils eine Zuweisung. Pit
win11 - Avira - LO 24.8.4.2 (X86_64)
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Re: [GELÖST] Alle Zellen einer bestimmten Farbe automatisch markieren
Hallo Pit,
habe es gerade mit meiner Datei unter LO 6.2.7, und AOO 4.1.7, Windows 7 versucht, Ergebnis anbei.
Und auch bei deiner Datei wird alle Zellen, denen eine "harte Farbe" von Hand zugeordnet wurde, die richtige Zellvorlage zugeordnet.
Kann dein Ergebnis hier also nicht nachstellen.
Gruß R
PS: Beim Versuch mit der noch nicht stabilen Version LO 6.3.1 kommt es bei mir zum Zittern der Schaltfläche, das Ergebnis ist aber auch in Ordnung.
Anbei noch deine Datei, bei der ich in die mit Zellvorlagen formatierten Zellen harte Farben gesetzt habe, bevor ich das Makro laufen lies.
habe es gerade mit meiner Datei unter LO 6.2.7, und AOO 4.1.7, Windows 7 versucht, Ergebnis anbei.
Und auch bei deiner Datei wird alle Zellen, denen eine "harte Farbe" von Hand zugeordnet wurde, die richtige Zellvorlage zugeordnet.
Kann dein Ergebnis hier also nicht nachstellen.
Gruß R
PS: Beim Versuch mit der noch nicht stabilen Version LO 6.3.1 kommt es bei mir zum Zittern der Schaltfläche, das Ergebnis ist aber auch in Ordnung.
Anbei noch deine Datei, bei der ich in die mit Zellvorlagen formatierten Zellen harte Farben gesetzt habe, bevor ich das Makro laufen lies.
- Dateianhänge
-
- calc - Hintergrundfrabe zu Formatvorlage.ods
- (10.34 KiB) 119-mal heruntergeladen
-
- Cellstyles_inserted.ods
- (12.31 KiB) 116-mal heruntergeladen
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
-
- **
- Beiträge: 21
- Registriert: Mi, 10.02.2016 17:35
Re: [GELÖST] Alle Zellen einer bestimmten Farbe automatisch markieren
Moin nochmals in die Runde,
@F3K Total
da muss ich doch nochmal nachfragen... wieso verwendest Du statt zum Beispiel Gelb Grün oder Blau als Vormatvorlage stets ellenlage Zahlen? Vermutlich bin ich hier wieder zu blöd und es sind vielleicht die (Hexa?)(CMYK)(RGB)(RAL)-codes für die Farben, die Du in den Zellen verwendet hast.
Auch sonst wäre es interessant zu wissen, wo man diese Codes angezeigt bekommt.
LG, Jörg
@F3K Total
da muss ich doch nochmal nachfragen... wieso verwendest Du statt zum Beispiel Gelb Grün oder Blau als Vormatvorlage stets ellenlage Zahlen? Vermutlich bin ich hier wieder zu blöd und es sind vielleicht die (Hexa?)(CMYK)(RGB)(RAL)-codes für die Farben, die Du in den Zellen verwendet hast.
Auch sonst wäre es interessant zu wissen, wo man diese Codes angezeigt bekommt.
LG, Jörg