Bedingte Formatierung mit Makro
Moderator: Moderatoren
Bedingte Formatierung mit Makro
Hallo User,
bin auf der Suche nach einem Makro um in einer Tabelle eine bedingte Formatierung durchzuführen, weil die "normale" bedingte Formatierung leider nur 3 Möglichkeiten zulässt ich aber mehr brauche.
Wenn ich in eineTabelle z.B. ein "G" eintrage soll der Hintergrund der Zelle z.B. gelb werden, bei "K" z.B. rot, bei "T" z.B. blau, usw.
Für die Hilfe vielen Dank im voraus.
bin auf der Suche nach einem Makro um in einer Tabelle eine bedingte Formatierung durchzuführen, weil die "normale" bedingte Formatierung leider nur 3 Möglichkeiten zulässt ich aber mehr brauche.
Wenn ich in eineTabelle z.B. ein "G" eintrage soll der Hintergrund der Zelle z.B. gelb werden, bei "K" z.B. rot, bei "T" z.B. blau, usw.
Für die Hilfe vielen Dank im voraus.
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
Hallo Turtle 47
Makro ist vielleicht gar nicht nötig, geht auch mit Formeln.
Schau hier mal¨
http://www.ooowiki.de/BedingteFormatier ... rieCalc%29
Gruss B.
Makro ist vielleicht gar nicht nötig, geht auch mit Formeln.
Schau hier mal¨
http://www.ooowiki.de/BedingteFormatier ... rieCalc%29
Gruss B.
Hallo
mit
......&T(VORLAGE(AKTUELL()
als Zusatz zu einer Formel kannst du beliebig viele verschiedene Vorlagen einer Zelle zuweisen. Dazu musst du zunächst aber entsprechende Vorlagen mit den Namen
"G","K"und "T" erstellen.
Dein Problem ist aber dann daß du die Zeichen "G"..usw. dann nicht direkt in die zelle schreiben kannst, sondern nur über eine Formel.
Vielleicht findet sich ja jemand der dafür ein Makro schreibt ?
Gruß
Karo
mit
......&T(VORLAGE(AKTUELL()
als Zusatz zu einer Formel kannst du beliebig viele verschiedene Vorlagen einer Zelle zuweisen. Dazu musst du zunächst aber entsprechende Vorlagen mit den Namen
"G","K"und "T" erstellen.
Dein Problem ist aber dann daß du die Zeichen "G"..usw. dann nicht direkt in die zelle schreiben kannst, sondern nur über eine Formel.
Vielleicht findet sich ja jemand der dafür ein Makro schreibt ?
Gruß
Karo
Hallo berndkli und karolus,
vielen Dank für die schnellen Antworten aber leider kann ich mit Formeln
in der Tabelle für meine Anwendung nichts anfangen.
Vieleicht hätte ich das Problem etwas näher erläutern sollen.
Es geht um eine Monatsübersicht für Mitarbeiter in der Urlaub, Krank, Frei
und andere besonderen Tage mit einem Kürzel eingetragen weren.
Die Mitarbeiter stehen in der linken Spalte untereinander, in der oberen
Zeile die Wochentage nebeneinander. Wenn ich jetzt in einer Zelle z.B. ein "U"
eintrage soll die Zelle z.B. grün hinterlegt werden. Mit einer Formel
geht das leider nicht weil die Formel überschrieben wird.
Habe ein solches Makro für so einen Fall schon mal für Excel gesehen.
War gar nicht so umfangreich. Nur ca. 20 Zeilen. Leider funktioniert das Makro
natürlich nicht unter oo.org. Oder doch????
Das habe ich für Excel gefunden:
Excel kann bekanntlich nur 3 bedingte Formatierungen pro Zelle verarbeiten. Dieses kleine Makro simuliert eine bedingte Formatierung. Wie Ihr sehen werdet, kann man auf diesem Wege jede Zelle mehrfach formatieren. Die bedingte Formatierung wird in diesem Fall nicht einmal benötigt.
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim cell As Range
For Each cell In Range("B2:H10")
If cell.Value = "X" Then cell.Font.ColorIndex = 15
If cell.Value = "L" Then cell.Font.ColorIndex = 3
If cell.Value = "T" Then cell.Font.ColorIndex = 41
If cell.Value = "R" Then cell.Font.ColorIndex = 10
If cell.Value = "R" Then cell.Font.FontStyle = "Fett"
If cell.Value = "E" Then cell.Font.ColorIndex = 15
If cell.Value = "F" Then cell.Font.ColorIndex = 3
If cell.Value = "D" Then cell.Interior.ColorIndex = 3
If cell.Value = "" Then cell.Clear
Next
End Sub
Bis dann.
JD
vielen Dank für die schnellen Antworten aber leider kann ich mit Formeln
in der Tabelle für meine Anwendung nichts anfangen.
Vieleicht hätte ich das Problem etwas näher erläutern sollen.
Es geht um eine Monatsübersicht für Mitarbeiter in der Urlaub, Krank, Frei
und andere besonderen Tage mit einem Kürzel eingetragen weren.
Die Mitarbeiter stehen in der linken Spalte untereinander, in der oberen
Zeile die Wochentage nebeneinander. Wenn ich jetzt in einer Zelle z.B. ein "U"
eintrage soll die Zelle z.B. grün hinterlegt werden. Mit einer Formel
geht das leider nicht weil die Formel überschrieben wird.
Habe ein solches Makro für so einen Fall schon mal für Excel gesehen.
War gar nicht so umfangreich. Nur ca. 20 Zeilen. Leider funktioniert das Makro
natürlich nicht unter oo.org. Oder doch????
Das habe ich für Excel gefunden:
Excel kann bekanntlich nur 3 bedingte Formatierungen pro Zelle verarbeiten. Dieses kleine Makro simuliert eine bedingte Formatierung. Wie Ihr sehen werdet, kann man auf diesem Wege jede Zelle mehrfach formatieren. Die bedingte Formatierung wird in diesem Fall nicht einmal benötigt.
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim cell As Range
For Each cell In Range("B2:H10")
If cell.Value = "X" Then cell.Font.ColorIndex = 15
If cell.Value = "L" Then cell.Font.ColorIndex = 3
If cell.Value = "T" Then cell.Font.ColorIndex = 41
If cell.Value = "R" Then cell.Font.ColorIndex = 10
If cell.Value = "R" Then cell.Font.FontStyle = "Fett"
If cell.Value = "E" Then cell.Font.ColorIndex = 15
If cell.Value = "F" Then cell.Font.ColorIndex = 3
If cell.Value = "D" Then cell.Interior.ColorIndex = 3
If cell.Value = "" Then cell.Clear
Next
End Sub
Bis dann.
JD
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
Hey turtle47,
hmm, also im Grunde genommen geht das in OOo genauso - mit dem Makro. Nur: ein Makro muss seperat gestartet werden, es ändert sich alos nicht automatich die Farbe der Zelle, wenn du dort etwas einträgst (obwohl, auch das wäre technisch realisierbar).
Um die Hintergundfarbe einer Zelle entsprechend dem INhalt zu verändern, hier das Prinzip-Makro:
und so weiter eben. Hier wird jedoch nur der Text einer Zelle ausgewertet, keine Zahlen. Das ganze packst du dann noch in eine Schleife über alle diene gewünschten Zellen - fertig. Aber: Du musst das Makro eben manuell auslösen - zum Beispiel durch einen Schalter in der Tabelle.
Viele Grüße
Thomas
hmm, also im Grunde genommen geht das in OOo genauso - mit dem Makro. Nur: ein Makro muss seperat gestartet werden, es ändert sich alos nicht automatich die Farbe der Zelle, wenn du dort etwas einträgst (obwohl, auch das wäre technisch realisierbar).
Um die Hintergundfarbe einer Zelle entsprechend dem INhalt zu verändern, hier das Prinzip-Makro:
Code: Alles auswählen
sub FarbAenderung
oDoc = thisComponent 'das Dokument
oSheet = oDoc.sheets(0) 'erste Tabellenblatt
oCell = oSheet.getCellRangeByName("B3") ' Zelle B3
if oCell.string = "" then oCell.CellBackColor = -1 keine Farbe
if oCell.string = "X" then oCell.CellBackColor = RGB(0,255, 0)
if oCell.string = "U" then oCell.CellBackColor = RGB(250,255, 0)
end sub
Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bin begeistert
Hallo Toxitom,
auch Dir vielen Dank für die schnelle Hilfe.
Sieht sehr gut aus und funktioniert super.
Kann man aber anstelle der Zelle nicht direkt einen Zellbereich angeben.
Ich habe zwar keine Ahnung, aber dann könnte man doch die Schleife weglassen.
Habe versucht anstelle "B3" mal "B2:Z20" einzugeben,
aber das funktioniert nicht. warum?
Viele Grüße
Jürgen
auch Dir vielen Dank für die schnelle Hilfe.
Sieht sehr gut aus und funktioniert super.
Kann man aber anstelle der Zelle nicht direkt einen Zellbereich angeben.
Ich habe zwar keine Ahnung, aber dann könnte man doch die Schleife weglassen.
Habe versucht anstelle "B3" mal "B2:Z20" einzugeben,
aber das funktioniert nicht. warum?

Viele Grüße
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
Hi Stephan,
bei Excel geht das doch auch.
Geht das in oo.org nicht auch?
Muss noch dazu sagen, bin absoluter Neuling.
Viele Grüsse und trotzdem Danke für jede Hilfe
Jürgen
bei Excel geht das doch auch.
Code: Alles auswählen
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim cell As Range
For Each cell In Range("B2:H10")
Muss noch dazu sagen, bin absoluter Neuling.
Viele Grüsse und trotzdem Danke für jede Hilfe
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
Hey turtle,
Gruss
Thomas
Nein. Das ist eine Spezialfunktion von VBA, die gibt es in OOo nicht.Geht das in oo.org nicht auch?
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Schade
Hallo Toxitom,
schade das es nicht geht.
Trotzdem vielen Dank.
Ich bin immer wieder erstaunt, wie schnell einem hier geholfen wird.
Respekt an alle hier im Forum.
Jürgen
schade das es nicht geht.
Trotzdem vielen Dank.
Ich bin immer wieder erstaunt, wie schnell einem hier geholfen wird.
Respekt an alle hier im Forum.
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
Hey turtle47,
habe auch ein Anwesenheitsliste erstell, mit Bedingter Formatierung.
Grund Farbe z.B der Zelle "C 8". Schwarz
z:B Blau = I Und O
Die Formel unter Bedingter Formatierung ist
WENN(ODER(C8="I";C8="O");WAHR();FALSCH())
z.B Grün = T ,GL, E ,VL , L , und VR
Die Formel unter Bedingter Formatierung ist
WENN(ODER(C8="T";C8="GL");WAHR();FALSCH())+WENN(ODER(C8="E";C8="VL");WAHR();FALSCH())+WENN(ODER(C8="L";C8="VR");WAHR();FALSCH())
z.B Rot = K,KK und F
Die Formel unter Bedingter Formatierung ist
WENN(ODER(C8="K";C8="KK");WAHR();FALSCH())+WENN(C8="F";WAHR();FALSCH())
Die Farben müssen aber erst mit Formatvorlagen (Neue Vorlge aus Selektion) erstellt werden!
Gruß Bembel
habe auch ein Anwesenheitsliste erstell, mit Bedingter Formatierung.
Grund Farbe z.B der Zelle "C 8". Schwarz
z:B Blau = I Und O
Die Formel unter Bedingter Formatierung ist
WENN(ODER(C8="I";C8="O");WAHR();FALSCH())
z.B Grün = T ,GL, E ,VL , L , und VR
Die Formel unter Bedingter Formatierung ist
WENN(ODER(C8="T";C8="GL");WAHR();FALSCH())+WENN(ODER(C8="E";C8="VL");WAHR();FALSCH())+WENN(ODER(C8="L";C8="VR");WAHR();FALSCH())
z.B Rot = K,KK und F
Die Formel unter Bedingter Formatierung ist
WENN(ODER(C8="K";C8="KK");WAHR();FALSCH())+WENN(C8="F";WAHR();FALSCH())
Die Farben müssen aber erst mit Formatvorlagen (Neue Vorlge aus Selektion) erstellt werden!
Gruß Bembel
Die Lösung
Hallo User
ich hab die Lösung
Oder gibt es noch ne einfachere Lösung??
Gruß
Jürgen
ich hab die Lösung
Code: Alles auswählen
sub FarbAenderung 'Füllt die Zellen mit Farbe
oDoc = thisComponent 'das Dokument
oSheet = oDoc.sheets(0) 'erstes Tabellenblatt
For ze = 4 to 32 'Zeilenzähler
For sp = 2 to 32 'Spaltenzähler
oCell = oSheet.getCellByPosition(sp,ze)
if oCell.string = "" then oCell.CellBackColor = RGB(255,255, 255) 'keine Farbe
if oCell.string = "J" then oCell.CellBackColor = RGB(0,102, 204) 'Jahresurlaub blau
if oCell.string = "H" then oCell.CellBackColor = RGB(0,102, 204) 'halber Urlaubstag blau
if oCell.string = "K" then oCell.CellBackColor = RGB(250,255, 102) 'Krank gelb
if oCell.string = "B" then oCell.CellBackColor = RGB(0,174, 0) 'Berufsschule grün
if oCell.string = "W" then oCell.CellBackColor = RGB(255,153, 102) 'Weiterbildung orange
if oCell.string = "U" then oCell.CellBackColor = RGB(255,51, 51) 'Fehlen unentschuldigt rot
next
next
end sub
sub SW 'Löscht die Farben in den Zellen für S/W Darstellung
oDoc = thisComponent 'das Dokument
oSheet = oDoc.sheets(0) 'zweites Tabellenblatt
For ze = 4 to 32 'Zeilenzähler
For sp = 2 to 32 'Spaltenzähler
oCell = oSheet.getCellByPosition(sp,ze)
if oCell.string = "" then oCell.CellBackColor = RGB(255,255, 255) 'keine Farbe
if oCell.string = "J" then oCell.CellBackColor = RGB(255,255, 255) 'Jahresurlaub blau
if oCell.string = "H" then oCell.CellBackColor = RGB(255,255, 255) 'halber Urlaubstag blau
if oCell.string = "K" then oCell.CellBackColor = RGB(255,255, 255) 'Krank gelb
if oCell.string = "B" then oCell.CellBackColor = RGB(255,255, 255) 'Berufsschule grün
if oCell.string = "W" then oCell.CellBackColor = RGB(255,255, 255) 'Weiterbildung orange
if oCell.string = "U" then oCell.CellBackColor = RGB(255,255, 255) 'Fehlen unentschuldigt rot
next
next
end sub

Gruß
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
Hallo
Mit dieser Einleitung:
Sub format_HiGruFarbe
oSelect=ThisComponent.CurrentSelection
oColumn=oselect.Columns
oRow=oSelect.Rows
For n= 0 To oColumn.getCount-1
For m = 0 To oRow.getCount-1
oCell=oselect.getCellByPosition (n, m)
"deine Format Zeilen"
und diesem Schluss:
Next m
Next n
End Sub
-brauchst du den gewünschten Bereich nur vorher selektieren, und das Makro starten
Gruß
Karo
Mit dieser Einleitung:
Sub format_HiGruFarbe
oSelect=ThisComponent.CurrentSelection
oColumn=oselect.Columns
oRow=oSelect.Rows
For n= 0 To oColumn.getCount-1
For m = 0 To oRow.getCount-1
oCell=oselect.getCellByPosition (n, m)
"deine Format Zeilen"
und diesem Schluss:
Next m
Next n
End Sub
-brauchst du den gewünschten Bereich nur vorher selektieren, und das Makro starten
Gruß
Karo