[gelöst] Schriftfarbe ändern per Makro

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [gelöst] Schriftfarbe ändern per Makro

Re: Schriftfarbe ändern per Makro

von mumpel » Mi, 30.07.2008 01:19

Habe es geschafft. War im Prinzip einfach. Ähnlich wie in Excel. Musste nur Range und Cell entsprechend ersetzen. Allerdings läuft das Makro mit bis zu 5 Minuten ziemlich langsam. In Excel läuft das selbe nicht mal eine Minute. Allerdings benutze ich in Excel For Each, diese Methode ist um vieles schneller. Das gibt es leider in OOo/Staroffice nicht. Jetzt fehlt mir nur noch ein Fortschrittsbalken, aber darum kümmere ich mich später.
Die Dokumentation hat mir da aber nicht geholfen. Nur selber probiert. Da die Datei zu groß zum anhängen ist, habe ich sie auf meine Homepage gestellt.
Arbeitszeitberechnung_ODS

Re: Schriftfarbe ändern per Makro

von ykcim » Di, 29.07.2008 12:29

Hallo,

ich mal vor langer Zeit eine Makro zum Umrechnen der Farbwerte geschrieben.
http://www.dannenhoefer.de/down/farben.odt

Damit kann Farben zwischen RGB, Hex und Longint hin und herrechnen.

mfg
Michael

Re: Schriftfarbe ändern per Makro

von Stephan » Di, 29.07.2008 12:12

Gibt es das in OOo-Calc nicht?
doch als Typwert. Der Farbwert jeder Farbe ergibt sich dabei aus der Umrechnung der aneinandergereihten Binärwerte der RGB-Anteile in Dezimal.

Beispiel:
Farbe ist RGB (64,128,255)

dann sind Binärwerte:
64:
01000000

128:
10000000

255:
11111111

deren Aneinanderreihung:
010000001000000011111111

und daraus der Dezimalwert:
4227327

Alles beispielsweise mittels Windows-Taschenrechner ausrechenbar.
Aber wie bekomme ich eine Schleife hin?
indem Du die Zelle nicht über deren Namen sondern deren Index ansprichtst:

Code: Alles auswählen

ThisComponent.Sheets(3).GetCellByPosition(0,0).Value
und über Zeilen- und Spaltenwert eine Schleife legtst.
Werde nachher auf Arbeit mal die Dokumentation lesen
wäre recht empfehlenswert denn das Verfahren einfachste Dinge hier im Dutzend abzufragen wird etwas emüdend, zumal beispielsweise mit dem speziellen PDF-Dokument für Calc was ich nannte für solch einfache Fragen eine exellent- kompakte Unterlage existiert


Gruß
Stephan

Re: Schriftfarbe ändern per Makro

von mumpel » Di, 29.07.2008 12:10

Danke soweit! Einzelne Zeilen lassen sich einfärben. Aber wie bekomme ich eine Schleife hin?

Code: Alles auswählen

Sub FeiertageFärben
Dim oRange As Object  
Rem Diese Zeile wird angemeckert
For Each oRange in ThisComponent.Sheets(0).GetCellRangeByName("A1:A47")

If oRange.value =  ThisComponent.Sheets(3).GetCellRangeByName("A1").Value Then
oRange.setPropertyValue( "CharColor", RGB(0,0,255) )
ElseIf oRange.value =  ThisComponent.Sheets(3).GetCellRangeByName("A2").Value Then
oRange.setPropertyValue( "CharColor", RGB(0,0,255) )
Else
End If
Next oRange
End Sub
Ich vermute, dass der Fehler bei GetCellRangeByName("A1:A47") liegt. Als Starbasic-Anfänger tue ich mich schwer, das alles zu verstehen. Jetzt muss ich erst mal zur Arbeit. Werde nachher auf Arbeit mal die Dokumentation lesen, vielleicht findet sich dort die Lösung.

Re: Schriftfarbe ändern per Makro

von komma4 » Di, 29.07.2008 11:42

natürlich, erster Treffer bei Google "RGB Farben" http://www.wackerart.de/rgbfarben.html

In OOo Extras>Optionen>OpenOffice.org>Farben kannst Du die Werte auch ablesen (das steht auch in meiner Dokumentation von colorSelection)

Re: Schriftfarbe ändern per Makro

von mumpel » Di, 29.07.2008 11:26

Und schon habe ich das nächste Problem. Ich kenne die RGB-Farben nicht. Habe immer nur mit ColorIndex gearbeitet. Gibt es das in OOo-Calc nicht? Gibt es irgendwo eine Liste mit den wichtigsten RGB-Farben?

Re: Schriftfarbe ändern per Makro

von komma4 » Di, 29.07.2008 11:22

Dein Internetbrowser erkennt, dass es sich bei der Datei (*.sxc) um ein ZIP-Format handelt und benennt den Download automatisch um.
Das machen anständige Browser nicht.


Zum Färben von Schrift in einer Zelle langt das Ändern der Eigenschaft "CharColor".
Das geht bei einer Zelle, mehrere Zellen, mehrere Bereichen:

Code: Alles auswählen

oRange.setPropertyValue( "CharColor", RGB(0,0,255) ) ' blau

Hilft das?

Re: Schriftfarbe ändern per Makro

von mumpel » Di, 29.07.2008 11:09

komma4 hat geschrieben:das liegt an der Einstellung Deines Internet-Browsers: die Zieladresse http://www.re-solutions.de/ooo/makros/c ... ection.sxc ist eine SXC (Calc-Datei, Format der OOo V1.x).

Benenne den Download nach *.sxc um und öffne mit OOo.

Hilft das?
Nein, hilft mir nichts. Da ich nicht weiss, was Du mit "Einstellung des Internet-Browsers" meinst. Ich weiss nicht, welche Einstellung Du meinst. Ich habe einfach die Zipdatei über "Öffnen" in Calc geöffnet.

Re: Schriftfarbe ändern per Makro

von mumpel » Di, 29.07.2008 11:07

Habs mir mit Calc angeschaut. Nützt mir aber nichts, da die Zellen nicht markiert sind und auch nicht erst markiert werden sollen. Die Zellen sollen automatisch durchlaufen werden. Diese befinden sich aber auf einem anderen Tabellenblatt. Wenn ich im Konfigurationsblatt das Datum ändere, sollen im Berechnungsblatt die Datumszellen durchlaufen und mit der Feiertagsliste verglichen werden. Ist eine Übereinstimmumg vorhanden, dann soll die Schriftfarbe rot sein. Aber nur für die Zelle, in der eine Übereinstimmung vorhanden ist. Das Rücksetzen in schwarze Schrift erfolg über ein anderes Makro.

Re: Schriftfarbe ändern per Makro

von komma4 » Di, 29.07.2008 11:06

das liegt an der Einstellung Deines Internet-Browsers: die Zieladresse http://www.re-solutions.de/ooo/makros/c ... ection.sxc ist eine SXC (Calc-Datei, Format der OOo V1.x).

Benenne den Download nach *.sxc um und öffne mit OOo.

Hilft das?

Re: Schriftfarbe ändern per Makro

von mumpel » Di, 29.07.2008 10:55

Habe ich heruntergeladen. Ist aber ein ZIP-Archiv. Nach dem entpacken bekomme ich aber nur lauter XML-Dateien.

Re: Schriftfarbe ändern per Makro

von komma4 » Di, 29.07.2008 10:49

wie schon geschrieben: Code-Beispiel in calc_colorSelection

[gelöst] Schriftfarbe ändern per Makro

von mumpel » Di, 29.07.2008 10:33

Hallo!

Ich möchte Feiertage einfärben. Die Feiertage stehen hierbei in einer Tabelle. Das Originalmakro aus Excel (Auszug) Hierbei werden die Zellen im Bereich "B13:B743" in einer Schleife durchlaufen und der Zellinhalt mit der Feiertagsliste in einem anderen Tabellenblatt verglichen. Bei Übereinstimmung wird die Schrift rot gefärbt.

Code aus Excel:

Code: Alles auswählen

Private Sub Week_day()
Application.EnableCancelKey = xlDisabled
Dim cell As Object
On Error Resume Next
Dim Zeile As Range
For Each cell In Worksheets("Zeitnachweis").Range("B13:B743")
If cell.value = Sheets("Feiertage").Range("A1").value Then
cell.Font.ColorIndex = 3
ElseIf cell.value = Sheets("Feiertage").Range("A2").value Then
cell.Font.ColorIndex = 3
ElseIf cell.value = Sheets("Feiertage").Range("A3").value Then
cell.Font.ColorIndex = 3
ElseIf cell.value = Sheets("Feiertage").Range("A4").value Then
cell.Font.ColorIndex = 3
Else
End If
Next cell
Mein Ansatz in OOo:

Code: Alles auswählen

Sub FeiertageFärben
Dim oCell As Object
On Error Resume Next
Rem Hier wird "Range" angemeckert
Dim Zeile As Range
ThisComponent.Sheets(0).Unprotect("Kennwort")
Rem Diese Zeile bekomme ich nicht hin
For Each oCell In ThisComponent.Sheets(0).GetCellRangeByName("B13:B743")
If oCell.value =  ThisComponent.Sheets(3).GetCellRangeByName("A1").Value Then
oCell.Font.ColorIndex = 3
ElseIf oCell.value = ThisComponent.Sheets(3).GetCellRangeByName("A2").Value Then
oCell.Font.ColorIndex = 3
ElseIf oCell.value =  ThisComponent.Sheets(3).GetCellRangeByName("A3").Value Then
oCell.Font.ColorIndex = 3
ElseIf oCell.value =  ThisComponent.Sheets(3).GetCellRangeByName("A4").Value Then
oCell.Font.ColorIndex = 3
Else

End if
Next oCell
ThisComponent.Sheets(0).Protect("Kennwort")
End Sub[[
Wie muss es richtig gemacht werden? Danke!

Gruß, René

Nach oben