Herbers Excel-Forum - das Archiv

Zelle einfärben bei komplexer Bedingung

Bild

Betrifft: Zelle einfärben bei komplexer Bedingung
von: JürgenH

Geschrieben am: 05.01.2007 08:56:43
Liebe Excelgurus,
ich bräuchte mal einen VBA-Code für folgende Problemstellung:
Wenn in meinem Tabellenblatt (Pivot-Tabelle) eine Zelle in der Spalte H einen Wert hat, der kleiner ist als der Inhalt der Zelle I1, aber nicht leer ist, und in der gleichen Zeile der Wert in der Spalte D leer ist, dann soll die Zelle in der Spalte H rot eingefärbt werden.
Danke für Eure Hilfe.
Jürgen
Bild

Betrifft: AW: Zelle einfärben bei komplexer Bedingung
von: EtoPHG
Geschrieben am: 05.01.2007 09:08:54
Hallo Jürgen,
Warum VBA ??
Als Bedingte Formatierung - Formel ist in H1 - Muster rot, dann runterkopieren (Format füllen):
=UND(NICHT(ISTLEER(H1));H1<$I$1;ISTLEER(D1))

Gruss Hansueli
Bild

Betrifft: AW: Zelle einfärben bei komplexer Bedingung
von: JürgenH
Geschrieben am: 05.01.2007 09:14:34
Hallo Hansueli,
ich baue die Pivot-Tabelle mit VBA auf (mit Macrorekorder aufgezeichnet) und wollte im Makro gleich die Farbformatierung mit erledigen. VBA wäre also nicht schlecht.
Gruß
Jürgen
Bild

Betrifft: AW: Zelle einfärben bei komplexer Bedingung
von: EtoPHG

Geschrieben am: 05.01.2007 09:42:46
Hallo Jürgen,
Und das alles mit VBA nein... Respekt!
Du musst die Address-Range von tTHisRange richtig setzten oder per VBA bestimmen:
Sub urbs_guerilla()
Dim tThisRange, tThisStart, tThisActive As String
tThisActive = ActiveCell.Address
tThisRange = "H10:H20"                  ' Range-Bereich ggf. Anpassen
tThisStart = Left(tThisRange, InStr(tThisRange, ":") - 1)
ActiveSheet.Range(tThisStart).Activate
ActiveSheet.Range(tThisRange).FormatConditions.Delete
ActiveSheet.Range(tThisStart).FormatConditions.Add Type:=xlExpression, Formula1:= _
"=UND(NICHT(ISTLEER(" & tThisStart & "));" & tThisStart & "<$I$1;ISTLEER(D" & Right(tThisStart, Len(tThisStart) - 1) & "))"
ActiveSheet.Range(tThisStart).FormatConditions(1).Interior.ColorIndex = 3
ActiveSheet.Range(tThisStart).AutoFill Destination:=ActiveSheet.Range(tThisRange), Type:=xlFillFormats
ActiveSheet.Range(tThisActive).Activate
End Sub

Gruss Hansueli
Bild

Betrifft: AW: Zelle einfärben bei komplexer Bedingung
von: JürgenH

Geschrieben am: 05.01.2007 10:03:59
Danke, Hansueli,
es funzt, und meine kritischen Zellen leuchten tatsächlich in kräftigem Rot.
Nur ein Problem: die Pivot-Tabelle hat täglich unterschiedliche Länge, und wenn ich bei der ThisRange-Angabe z.B. fest H2:H999 einstelle, bekomme ich im Ausdruck massenweise Leerseiten.
Wie kann ich denn mit VBA die letzte belegte Zelle der Pivot-Tabelle und somit H2:H??? bestimmen (wie gesagt: VBA nur mit Macrorekorder und kleinere einfache Spielereien)
Danke im Voraus.
Jürgen
Bild

Betrifft: AW: Zelle einfärben bei komplexer Bedingung
von: EtoPHG
Geschrieben am: 05.01.2007 10:10:30
Hallo Jürgen,
Ersetze die Zeile
tThisRange = "H10:H20"

durch
tThisRange = "H2:H" & ActiveSheet.Range("H65536").End(xlUp).Row

Gruss Hansueli
Bild

Betrifft: AW: Zelle einfärben bei komplexer Bedingung
von: EtoPHG

Geschrieben am: 05.01.2007 10:14:03
Nochmals Hallo Jürgen,
Ersetze auch noch die Zeile
ActiveSheet.Range(tThisRange).FormatConditions.Delete

durch
ActiveSheet.Range("H:H").FormatConditions.Delete

sonst werden nicht alle alten Bedingungen gelöscht.
Gruss Hansueli
Bild

Betrifft: AW: Zelle einfärben bei komplexer Bedingung
von: JürgenH

Geschrieben am: 05.01.2007 10:54:35
Nochmals Danke, Hansueli, für Deine Mühe!
Es läuft jetzt reibungslos!
Man lernt eben immer dazu ;-)
Ein schönes Wochenende wünscht
Jürgen
 Bild
Excel-Beispiele zum Thema "Zelle einfärben bei komplexer Bedingung"
Wert aus Spalte C, wenn Spalten A und B Bedingungen erfüllen Beim Erfüllen einer Bedingungen Farbe für 1 Minute
Anzahl von Werten nach verschiedenen Bedingungen. Zeilen zählen, in denen zwei Bedingungen zutreffen
Dem Zellkontextmenü ein Menü "Zahlungsbedingungen" hinzufügen Wert eintragen, wenn Bedingte-Formatierung-Bedingung zutrifft
Zelle markieren, wenn zwei Bedingungen erfüllt sind