Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1276to1280
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bedingte Formatierung in Liste übertragen

Bedingte Formatierung in Liste übertragen
stefuh
Ich habe eine Pendenzenliste mit bedingten Formatierungen über VBA (siehe Mustervorlage). Dabei werden die Farben der Kürzel aus der Legende auf die Kürzel in der Liste automatisch übertragen. Dieser Vorgang funktioniert soweit ganz gut.
Nun will ich den Code für die bedingte Formatierung wie folgt erweitern:
Sobald in der Legende eine Farbe eines Kürzels geändert wird, müssen alle selben Kürzel in der Liste (in einem Vorgang) mit der neu zugeteilten Farbe aktualisiert werden. Da die Liste immer wie länger wird, ist es mühsam bei einer Farbänderung alle Kürzel manuell anpassen zu müssen.
Bis jetzt habe ich schon einiges ausprobiert, leider ohne Erfolg. Ich hoffe, jemand von euch kann mir dabei weiterhelfen.
Gruss
Stefan

AW: Bedingte Formatierung in Liste übertragen
24.08.2012 11:44:22
Beverly
Hi Stefan,
ich nehme an mit "siehe Mustervorlage" beziehst du dich auf ein angehängtes Beispiel - das fehlt allerdings.
Eine Farbänderung löst kein Ereignis aus, welches man auswerten könnte - du müsstest die Änderungen also selbst starten. Verwende die FindNext-Methode, um alle Zellen mit dem betreffenden Kürzel im Bereich zu suchen um dann die Farbe entsprechend zu ändern.


AW: Bedingte Formatierung in Liste übertragen
24.08.2012 11:55:02
stefuh
Hallo Beverly
Ich kann die Beispieldatei nicht ins Form stellen. Der Upload ist soweit geglückt. Aber der weitere Ablauf danach ist für mich unklar. Kannst du mir erklären, wie das genau gehen soll?
Vielen Dank

Anzeige
Upload
24.08.2012 12:17:27
Rudi
Hallo,
nach dem Upload siehst du einen Link. Den musst du kopieren und in deinen Beitrag einfügen
Gruß
Rudi

AW: Bedingte Formatierung in Liste übertragen
24.08.2012 12:33:17
Beverly
Hi Stefan,
kopiere den Link, den du nach dem Upload erhältst und kehre im Browser über den Schalter "Eine Seite zurück" wieder in deinen Beitrag zurück. Dort fügst du dann den kopierten Link ein.


AW: Bedingte Formatierung in Liste übertragen
24.08.2012 13:46:20
stefuh
Vielen Dank. Ich hoffe es hat geklappt!
Gruss
Stefan
https://www.herber.de/bbs/user/81557.xls

Anzeige
AW: Bedingte Formatierung in Liste übertragen
24.08.2012 14:27:11
Beverly
Hi Stefan,
mit folgendem Code kannst du die Schriftfarbe in Spalte F der Tabelle oberhalb der Legende an die Schriftfarbe der in deiner Beispieldatei ab Zeile 24 aufgeführten Kürzel anpassen. Bedingung ist allerdings, dass du die verbundenen Zellen in Zeile 23 (Zeile, in der "Legende:" steht) entfernst.
Sub FarbenAnpassen()
Dim lngStart As Long
Dim lngZeile As Long
Dim rngZelle As Range
Dim strStart As String
Dim lngEnde As Long
lngStart = Columns(1).Find("Legende:", lookat:=xlWhole).Row + 1
lngEnde = Cells(lngStart, 1).End(xlUp).Row
For lngZeile = lngStart To IIf(IsEmpty(Cells(Rows.Count, 6)), Cells(Rows.Count, 6).End(xlUp). _
Row, Rows.Count)
Set rngZelle = Range(Cells(5, 6), Cells(lngEnde, 6)).Find(Cells(lngZeile, 6), lookat:= _
xlWhole)
If Not rngZelle Is Nothing Then
strStart = rngZelle.Address
Do
rngZelle.Font.ColorIndex = Cells(lngZeile, 6).Font.ColorIndex
Set rngZelle = Range(Cells(5, 6), Cells(lngEnde, 6)).FindNext(rngZelle)
Loop While Not rngZelle Is Nothing And rngZelle.Address  strStart
End If
Next lngZeile
End Sub


Anzeige
AW: Bedingte Formatierung in Liste übertragen
24.08.2012 15:05:32
stefuh
Hallo Beverly
Vielen Dank für die rasche Unterstützung. Ich habe den Code eingefügt und er läuft soweit ganz nach meiner Vorstellung. Gibt es keine Möglichkeit, dass die verbundenen Zellen mit der "Legende" im verbundenen Zustand belassen werden kann?
Noch ein kleines Problem:
Beim Umstellen in der Spalte J von "e" auf "p", wird in Spalte F die Schrift nicht mehr automatisch in Fettschrift dargestellt. Die Schrift muss bei den Nummern mit der Endung "00" in Spalte A immer in Fettschrift dargestellt werden.
Ich hoffe, dass dies kein zu Grosser Aufwand wird.
Gruss
Stefan

Anzeige
AW: Bedingte Formatierung in Liste übertragen
24.08.2012 17:46:57
Beverly
Hi Stefan,
wenn die Zellen verbunden bleiben sollen - wobei ich keinen Grund sehe, dass das so bleiben muss, denn man kann die Zellformatierung so einstellen, dass die Gitternetzlinien für die Spaltentrennung in den Spalten A:K nicht angezeigt werden - dann kannst du diesen Code verwenden:
Sub FarbenAnpassen()
Dim rngZelle As Range
Dim lngStart As Long
Dim lngZeile As Long
Dim strStart As String
Dim lngEnde As Long
lngEnde = Cells(5, 1).End(xlDown).Row
lngStart = Cells(lngEnde, 1).End(xlDown).Row + 1
For lngZeile = lngStart To IIf(IsEmpty(Cells(Rows.Count, 6)), _
Cells(Rows.Count, 6).End(xlUp).Row, Rows.Count)
Set rngZelle = Range(Cells(5, 6), Cells(lngEnde, 6)).Find(Cells(lngZeile, 6), _
lookat:=xlWhole)
If Not rngZelle Is Nothing Then
strStart = rngZelle.Address
Do
rngZelle.Font.ColorIndex = Cells(lngZeile, 6).Font.ColorIndex
Set rngZelle = Range(Cells(5, 6), Cells(lngEnde, 6)).FindNext(rngZelle)
Loop While Not rngZelle Is Nothing And rngZelle.Address  strStart
End If
Next lngZeile
End Sub
Der Code ändert nicht den Schriftschnitt sondern nur die Farbe und er steht in keinerlei Zusammenhang mit dem Code, der den Schriftschnitt auf Fett setzt. An diesem Code habe ich 1. nichts geändert und 2. wird bei Auswahl von "p" bei mir der Schriftschnitt nach wievor auf Fett gesetzt, gleichgültug ob ich meinen Code bereits habe laufen lassen oder nicht - ich kann den Fehler also nicht nachvollziehen.
Was mir jedoch aufgefallen ist: bei Änderung in Spalte J von "p" auf "e", werden die von meinem Code ausgeführten Farbänderungen wieder zurückgesetzt. Du musst ihn also immer wieder ausführen, sobald du eine Änderung in Spalte J vorgenommen hast, oder du musst den Code, der auf die Änderung in Spalte J reagiert, dahingehend ändern, dass die Schriftfarbe für Spalte F nicht geändert wird.


Anzeige
AW: Bedingte Formatierung in Liste übertragen
27.08.2012 14:04:40
stefuh
Hallo Beverly
Vielen Dank für deine wertvolle Mithilfe. Der Code funktioniert gemäss meinen Vorstellungen und habe soweit auch alles begriffen. Was mir aber noch etwas Mühe bereitet, ist der Ausschluss der Zeilen, welche in Spalte J mit "e" gesetzt sind. Diese Zeilen dürfen nicht neu eingefärbt werden, sonder müssen grau bleiben. Gibt es hierfür eine Möglichkeit?
Gruss
Stefan

AW: Bedingte Formatierung in Liste übertragen
27.08.2012 18:50:35
Beverly
Hi Stefan,
ändere diese Codezeile:
            If Cells(rngZelle.Row, 10)  "e" Then _
rngZelle.Font.ColorIndex = Cells(lngZeile, 6).Font.ColorIndex

Damit wird die Zelle nur formatiert, wenn in Spalte J kein "e" steht.


Anzeige
AW: Bedingte Formatierung in Liste übertragen
27.08.2012 21:48:33
stefuh
Hallo Beverly
Die Erweiterung scheint nicht zu funktionieren. Ich habe deine Zeile wie folg eingefügt:
Sub FarbenAnpassen()
Dim rngZelle As Range
Dim lngStart As Long
Dim lngZeile As Long
Dim strStart As String
Dim lngEnde As Long
lngEnde = Cells(5, 1).End(xlDown).Row
lngStart = Cells(lngEnde, 1).End(xlDown).Row + 1
For lngZeile = lngStart To IIf(IsEmpty(Cells(Rows.Count, 6)), _
Cells(Rows.Count, 6).End(xlUp).Row, Rows.Count)
Set rngZelle = Range(Cells(5, 6), Cells(lngEnde, 6)).Find(Cells(lngZeile, 6), _
lookat:=xlWhole)
If Not rngZelle Is Nothing Then
strStart = rngZelle.Address
If Cells(rngZelle.Row, 10) = "e" Then _
rngZelle.Font.ColorIndex = Cells(lngZeile, 6).Font.ColorIndex
Do
rngZelle.Font.ColorIndex = Cells(lngZeile, 6).Font.ColorIndex
Set rngZelle = Range(Cells(5, 6), Cells(lngEnde, 6)).FindNext(rngZelle)
Loop While Not rngZelle Is Nothing And rngZelle.Address  strStart
End If
Next lngZeile
End Sub

Die Zeilen mit "e" werden immer noch eingefärbt. Was mache ich falsch?
Gruess
Stefan

Anzeige
AW: Bedingte Formatierung in Liste übertragen
27.08.2012 22:23:35
Beverly
Hi Stefan,
falsche Stelle - das muss innerhalb der Do-Schleife stehen, weil darin ja alle Zellen durchlaufen werden. Die Zeile sollte nicht ergänzt sondern geändert werden:
Sub FarbenAnpassen()
Dim rngZelle As Range
Dim lngStart As Long
Dim lngZeile As Long
Dim strStart As String
Dim lngEnde As Long
lngEnde = Cells(5, 1).End(xlDown).Row
lngStart = Cells(lngEnde, 1).End(xlDown).Row + 1
For lngZeile = lngStart To IIf(IsEmpty(Cells(Rows.Count, 6)), _
Cells(Rows.Count, 6).End(xlUp).Row, Rows.Count)
Set rngZelle = Range(Cells(5, 6), Cells(lngEnde, 6)).Find(Cells(lngZeile, 6), _
lookat:=xlWhole)
If Not rngZelle Is Nothing Then
strStart = rngZelle.Address
Do
If Cells(rngZelle.Row, 10) = "e" Then _
rngZelle.Font.ColorIndex = Cells(lngZeile, 6).Font.ColorIndex
Set rngZelle = Range(Cells(5, 6), Cells(lngEnde, 6)).FindNext(rngZelle)
Loop While Not rngZelle Is Nothing And rngZelle.Address  strStart
End If
Next lngZeile
End Sub


Anzeige
AW: Bedingte Formatierung in Liste übertragen
27.08.2012 23:20:58
stefuh
Hallo Beverly
Vielen Dank. Jetz funktioniert der Code einwandfrei. Ich musste nur noch = "e" durch "e" ersetzen.
Ich habe noch ein kleines Problem. In der selben Liste will ich mit einem Modul den Text in allen Zeilen (Spalte A bis K) in Abhängigkeit von Werte in Spalte A und J einfärben und die entsprechende Schriftdicke setzen:
Wenn Wert in Spalte A: Letzte 2 Ziffern = "00" und Wert in Spalte J: "p", dann
- Schrift von Spalte A bis K = schwarz (1), dick
Wenn Wert in Spalte A: Letzte 2 Ziffern = "00" und Wert in Spalte J: "e", dann
- Schrift von Spalte A bis K = grau (16), dick
Wenn Wert in Spalte A: Letzte 2 Ziffern "00" und Wert in Spalte J: "p", dann
- Schrift von Spalte A bis K = schwarz (1), dünn
Wenn Wert in Spalte A: Letzte 2 Ziffern "00" und Wert in Spalte J: "e", dann
- Schrift von Spalte A bis K = grau (16), dünn
Um dies umzusetzen, habe ich folgenden Code erstellt:
Sub Formatieren_ep()
Dim ZelleU As Long
Dim rngRow As Range
Dim Zeile As Long
With ActiveSheet
ZelleU = .Cells(.Rows.Count, 1).End(xlUp).Row - 8
rngRow = .Range(.Rows(.Cells(1, 5)), .Rows(ZelleU, 11))
Zeile = rngRow.Row
With rngRow
If Right(.Cells(Zeile, 1), 2) = "00" And .Cells(Zeile, 7) = "p" Then
.ColorIndex = 1:
.Bold = True
ElseIf Right(.Cells(Zeile, 1), 2) = "00" And .Cells(Zeile, 7) = "e" Then
.ColorIndex = 16:
.Bold = True
ElseIf Right(.Cells(Zeile, 1), 2)  "00" And .Cells(Zeile, 7) = "p" Then
.ColorIndex = 1:
.Bold = False
ElseIf Right(.Cells(Zeile, 1), 2)  "00" And .Cells(Zeile, 7) = "e" Then
.ColorIndex = 16:
.Bold = False
End If
End With
Next
End With
End Sub
Leider habe ich diesen Code noch nicht zum Laufen gebracht. Ich weiss nicht, was ich falsch mache.
Anscheinend liege ich mit meinem Ansatz wieder einmal total daneben. Ich hoffe, es kann mir jemand helfen. Das ganze muss in ein Modul gepackt werden.
Gruss
Stefan

Anzeige
AW: Bedingte Formatierung in Liste übertragen
28.08.2012 07:40:10
Beverly
Hi Stefan,
Sub Formatieren_ep()
Dim ZelleU As Long
Dim Zeile As Long
Dim rngRow As Range
ZelleU = Cells(Rows.Count, 1).End(xlUp).Row - 8
For Zeile = 5 To ZelleU
Set rngRow = Range(Cells(Zeile, 1), Cells(Zeile, 11))
With rngRow
If Right(.Cells(1), 2) = "00" And .Cells(10) = "p" Then
.Font.ColorIndex = 1
.Font.Bold = True
ElseIf Right(.Cells(1), 2) = "00" And .Cells(10) = "e" Then
.Font.ColorIndex = 16
.Font.Bold = True
ElseIf Right(.Cells(1), 2)  "00" And .Cells(10) = "p" Then
.Font.ColorIndex = 1
.Font.Bold = False
ElseIf Right(.Cells(1), 2)  "00" And .Cells(10) = "e" Then
.Font.ColorIndex = 16
.Font.Bold = False
End If
End With
Next
Set rngRow = Nothing
End Sub



AW: Bedingte Formatierung in Liste übertragen
28.08.2012 08:36:20
stefuh
Hallo Beverly
Vielen Dank, dass du mir nochmals geholfen hast! Jetzt läuft alles rund. Ich bin froh, dass der Ansatz wenigstens gestummen hat.
Gruss
Stefan

AW: Bedingte Formatierung in Liste übertragen
28.08.2012 16:24:10
stefuh
Hallo Beverly
Es ist wie verhext! Da ich die Spalte F vom Code ausschliessen will, habe ich den Code mit einem UnionRange abgeändert. Eine ähnliche Aufgabe habe ich auch schon auf diese Weise erfolgreich gelöst. Mit diesem Code scheint es mit dem UnionRange nicht zu funktionieren:
Sub Formatieren_ep()
Dim ZelleU As Long
Dim Zeile As Long
Dim rngRow As Range
ZelleU = Cells(Rows.Count, 1).End(xlUp).Row - 8
For Zeile = 5 To ZelleU
Set rngRow = Union(Range(Cells(Zeile, 1), Cells(Zeile, 5)), Range(Cells(Zeile, 7), Cells( _
Zeile, 11)))
With rngRow
If Right(.Cells(1), 2) = "00" And .Cells(10) = "p" Then
.Font.ColorIndex = 1
.Font.Bold = True
ElseIf Right(.Cells(1), 2) = "00" And .Cells(10) = "e" Then
.Font.ColorIndex = 16
.Font.Bold = True
ElseIf Right(.Cells(1), 2)  "00" And .Cells(10) = "p" Then
.Font.ColorIndex = 1
.Font.Bold = False
ElseIf Right(.Cells(1), 2)  "00" And .Cells(10) = "e" Then
.Font.ColorIndex = 16
.Font.Bold = False
End If
End With
Next
Set rngRow = Nothing
End Sub
Was mache ich wieder falsch? Es ist zum verzweifeln!
Gruss
Stefan

AW: Bedingte Formatierung in Liste übertragen
28.08.2012 21:58:02
Beverly
Hi Stefan,
Sub Formatieren_ep()
Dim ZelleU As Long
Dim Zeile As Long
Dim rngRow As Range
ZelleU = Cells(Rows.Count, 1).End(xlUp).Row - 8
For Zeile = 5 To ZelleU
Set rngRow = Union(Range(Cells(Zeile, 1), Cells(Zeile, 5)), _
Range(Cells(Zeile, 7), Cells(Zeile, 11)))
If Right(Cells(Zeile, 1), 2) = "00" And Cells(Zeile, 10) = "p" Then
rngRow.Font.ColorIndex = 1
rngRow.Font.Bold = True
ElseIf Right(Cells(Zeile, 1), 2) = "00" And Cells(Zeile, 10) = "e" Then
rngRow.Font.ColorIndex = 16
rngRow.Font.Bold = True
ElseIf Right(Cells(Zeile, 1), 2)  "00" And Cells(Zeile, 10) = "p" Then
rngRow.Font.ColorIndex = 1
rngRow.Font.Bold = False
ElseIf Right(Cells(Zeile, 1), 2)  "00" And Cells(Zeile, 10) = "e" Then
rngRow.Font.ColorIndex = 16
rngRow.Font.Bold = False
End If
Next
Set rngRow = Nothing
End Sub


AW: Bedingte Formatierung in Liste übertragen
27.08.2012 21:53:24
stefuh
Hallo Beverly
Die Erweiterung scheint nicht zu funktionieren. Ich habe deine Zeile wie folg eingefügt:
Sub FarbenAnpassen()
Dim rngZelle As Range
Dim lngStart As Long
Dim lngZeile As Long
Dim strStart As String
Dim lngEnde As Long
lngEnde = Cells(5, 1).End(xlDown).Row
lngStart = Cells(lngEnde, 1).End(xlDown).Row + 1
For lngZeile = lngStart To IIf(IsEmpty(Cells(Rows.Count, 6)), _
Cells(Rows.Count, 6).End(xlUp).Row, Rows.Count)
Set rngZelle = Range(Cells(5, 6), Cells(lngEnde, 6)).Find(Cells(lngZeile, 6), _
lookat:=xlWhole)
If Not rngZelle Is Nothing Then
strStart = rngZelle.Address
If Cells(rngZelle.Row, 10) = "e" Then _
rngZelle.Font.ColorIndex = Cells(lngZeile, 6).Font.ColorIndex
Do
rngZelle.Font.ColorIndex = Cells(lngZeile, 6).Font.ColorIndex
Set rngZelle = Range(Cells(5, 6), Cells(lngEnde, 6)).FindNext(rngZelle)
Loop While Not rngZelle Is Nothing And rngZelle.Address  strStart
End If
Next lngZeile
End Sub
Die Zeilen mit "e" werden immer noch eingefärbt. Was mache ich falsch?
Gruss
Stefan

AW: Bedingte Formatierung in Liste übertragen
27.08.2012 21:55:21
stefuh
Hallo Beverly
Die Erweiterung scheint nicht zu funktionieren. Ich habe deine Zeile wie folg eingefügt:
Sub FarbenAnpassen()
Dim rngZelle As Range
Dim lngStart As Long
Dim lngZeile As Long
Dim strStart As String
Dim lngEnde As Long
lngEnde = Cells(5, 1).End(xlDown).Row
lngStart = Cells(lngEnde, 1).End(xlDown).Row + 1
For lngZeile = lngStart To IIf(IsEmpty(Cells(Rows.Count, 6)), _
Cells(Rows.Count, 6).End(xlUp).Row, Rows.Count)
Set rngZelle = Range(Cells(5, 6), Cells(lngEnde, 6)).Find(Cells(lngZeile, 6), _
lookat:=xlWhole)
If Not rngZelle Is Nothing Then
strStart = rngZelle.Address
If Cells(rngZelle.Row, 10) = "e" Then _
rngZelle.Font.ColorIndex = Cells(lngZeile, 6).Font.ColorIndex
Do
rngZelle.Font.ColorIndex = Cells(lngZeile, 6).Font.ColorIndex
Set rngZelle = Range(Cells(5, 6), Cells(lngEnde, 6)).FindNext(rngZelle)
Loop While Not rngZelle Is Nothing And rngZelle.Address  strStart
End If
Next lngZeile
End Sub
Die Zeilen mit "e" werden immer noch eingefärbt. Was mache ich falsch?
Gruess
Stefan

AW: Bedingte Formatierung in Liste übertragen
27.08.2012 15:05:13
stefuh
Hallo Beverly
Vielen Dank für deine wertvolle Unterstützung. Der Code läuft genau nach meiner Vorstellung und soweit kann ich auch alles nachvollziehen. Was mir aber noch Probleme bereitet, ist die Ausgrenzung der Zeilen bei welchen in Spalte J eine "e" steht. Diese Zeilen dürfen in Spalte F bei der Farbaktualisierung nicht neu eingefärbt werden. Wie können die Zeilen mit "e" in Spalte J von dem Code ausgeschlossen werden?
Gruss
stefan

Mustervorlage: Wo? owT
24.08.2012 11:44:56
Rudi

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige