Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bedingte Formatierung in VBA

Bedingte Formatierung in VBA
Heinz
Guten morgen,im Forum
Frage 1: Könnte man die CASE Anwendung etwas kürzer gestalten ?
Frage 2: Wenn ich den Wert in C3:A154 ändere, bleibt die Formatierung bestehen.
Zb. ich ändere den Wert "E1" in "1"
Hätte jemand eine Hilfe anzubieten?
Gruß
Heinz

  • 'Bedingte Formatierung
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C3:AF154")) Is Nothing Then
    For Each Target In Target
    Select Case Target
    Case "E1"
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case "E2"
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case "E3"
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case "E11"
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case "E12"
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case "E13"
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case "E21"
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case "E22"
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case "E23"
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case "E31"
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case "E32"
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case "E33"
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    '  hier weitere Case Anweisungen
    End Select
    Next Target
    End If
    End Sub
    


  • AW: Bedingte Formatierung in VBA
    10.04.2012 09:02:34
    hary
    Hallo Heinz
    Brauchst Du wirklich die Schleife?
    Teste mal:
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C3:AF154")) Is Nothing Then
    Select Case Target
    Case "E1", "E2", "E3" 'usw
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case Else
    Target.Interior.ColorIndex = xlNone
    Target.Font.ColorIndex = vbBlack
    End Select
    End If
    End Sub
    
    gruss hary
    AW: andere moeglichkeit
    10.04.2012 09:05:47
    hary
    Hallo nochmal
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C3:AF154")) Is Nothing Then
    Select Case Left(Target, 1) 'alles was mit E beginnt
    Case "E"
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case Else
    Target.Interior.ColorIndex = xlNone
    Target.Font.ColorIndex = vbBlack 'Farbe aendern
    End Select
    End If
    End Sub
    

    gruss hary
    Anzeige
    AW: andere moeglichkeit
    10.04.2012 09:06:28
    hary
    Hallo nochmal
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C3:AF154")) Is Nothing Then
    Select Case Left(Target, 1) 'alles was mit E beginnt
    Case "E"
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case Else
    Target.Interior.ColorIndex = xlNone
    Target.Font.ColorIndex = vbBlack 'Farbe aendern
    End Select
    End If
    End Sub
    

    gruss hary
    AW: andere moeglichkeit
    10.04.2012 09:20:28
    Heinz
    Hallo Hary
    Erstmals DANKE!! Funktioniert.
    Frage 1: Ich hätte jetzt das selbige aber erweitert mit "Ü1" usw..
    Frage 2: Muß mand die Farbe zwei mal angeben? Also "Font.ColorIndex = 2 &
    "Font.ColorIndex = vbBlack"
  • Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case Else
    Target.Interior.ColorIndex = xlNone
    Target.Font.ColorIndex = vbBlack 'Farbe aendern

  • Gruß
    Heinz
    Anzeige
    AW: andere moeglichkeit
    10.04.2012 09:31:12
    hary
    Hallo Heinz
    welchen Code hast Du genommen?
    In Case Else muss rein wenn die Bedingung nicht erfuellt ist. Sonst bleibt die Farbe stehen. Wie Du im ersten Beitrag geschrieben hast.
    mit E und Ü:
    
    Select Case Left(Target, 1) 'alles was mit E beginnt
    Case "E","Ü" usw.
    

    grus hary
    AW: andere moeglichkeit
    10.04.2012 09:37:08
    Heinz
    Hallo Hary
    Ja das habe ich verstanden. Danke
    Sonst bleibt die Farbe stehen.
    

    Leider brauche ich für "Ü" andere Farben.
    Select Case Left(Target, 1) 'alles was mit E beginnt
    Case "E","Ü" usw.
    

    welchen Code hast Du genommen?
    
    'Bedingte Formatierung
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C3:AF154")) Is Nothing Then
    Select Case Left(Target, 1) 'alles was mit E beginnt
    Case "E"
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case Else
    Target.Interior.ColorIndex = xlNone
    Target.Font.ColorIndex = vbBlack 'Farbe aendern
    End Select
    End If
    End Sub
    
    Gruß Heinz
    Anzeige
    AW: andere moeglichkeit
    10.04.2012 09:42:31
    hary
    Hallo
    dann ein jeweils ein extra Case.
    
    Case "E"
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case "Ü"
    Target.Interior.ColorIndex = 'anpassen
    Target.Font.ColorIndex = 'anpassen
    

    Case Else braucht nur einmal am ende.
    gruss hary
    AW: andere moeglichkeit
    10.04.2012 09:43:56
    Heinz
    Hallo Hary
    DU BIST S P I T Z E !!!
    Recht herzlichen DANK
    Gruß Heinz
    AW: andere moeglichkeit
    10.04.2012 10:59:48
    Heinz
    Hallo Hary
    Jetzt habe ich leider noch eine Frage.
    Ich müsste auch "ZA" eingeben,diese hat eine andere Farbe als "Z"
    Wie geht das bitte.
    Gruß
    Heinz
  • 'Bedingte Formatierung
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C3:AF154")) Is Nothing Then
    Select Case Left(Target, 1) 'alles was mit E beginnt
    Case "E"
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 2
    Case "Ü"
    Target.Interior.ColorIndex = 8
    Target.Font.ColorIndex = 3
    Case "Z"
    Target.Interior.ColorIndex = 9
    Target.Font.ColorIndex = 2
    Case "U"
    Target.Interior.ColorIndex = 4
    Target.Font.ColorIndex = 3
    Case Else
    Target.Interior.ColorIndex = xlNone
    Target.Font.ColorIndex = vbBlack 'Farbe aendern
    End Select
    End If
    End Sub
    


  • Anzeige
    AW: andere moeglichkeit
    10.04.2012 11:09:31
    hary
    Hallo Heinz
    probier.
    
    Case "Z"
    Target.Interior.ColorIndex = IIf(Left(Target, 2) = "ZA", 6, 9) 'die 6 steht fuer  _
    Eintrag ZA
    Target.Font.ColorIndex = 2
    

    gruss hary
    AW: andere moeglichkeit
    10.04.2012 11:17:10
    Heinz
    Hallo Hary
    Wiederum eine Super Lösung von dir.
    Recht herzlichen Dank.
    Gruß Heinz
    Ich muss mich erneut wiederholen, ...
    11.04.2012 01:48:49
    Luc:-?
    …Heinz;
    „Bedingte Formatierung“ ist ein xlFachbegriff, der sich auf das FormatCondition-Objekt bezieht, das seinerseits durch die entsprechende Eigenschaft des Range-Objekts dargestellt wird. Dieses hat mehr Eigenschaften als das FormatCondition-Objekt, letzteres auch einige, die das Range-Objekt nicht besitzt.
    Target ohne den Zusatz .FormatConditions ist aber ein Range-Objekt! Die automatisierte Änderung seiner .Interior.Color-Eigenschaft darf man folglich nicht als „Bedingte Formatierung“ bezeichnen; es handelt sich höchstens um eine (unbedingte) Formatierung nach Bedingungen (Formatting on Conditions), was sofort bemerkbar wird, wenn die Bedingung nicht mehr zutrifft → die ZellFarbe wird nicht zurückgesetzt, was ja auch Inhalt deiner 2.Frage zu sein scheint!
    Zwar ist deine Einschätzung alle Versionen bei echter BedingtFormatierung nicht zutreffend, aber auf jeden Fall kann man auch in Versionen vor Xl12 anhand externer Bedingungen die .Interior.Color-Eigenschaft des FormatCondition-Objekts ändern, was den Vorteil hat, dass die sichtbare ZellFarbe zurückgesetzt wird, wenn dessen Bedingung nicht mehr erfüllt ist, man muss sie nur entsprechend formulieren.
    Gruß Luc :-?
    Anzeige
    AW: Ich muss mich erneut wiederholen, ...
    11.04.2012 08:05:48
    Heinz
    Hallo Luc
    Super Erklärung,recht herzlichen Dank.
    Gruß
    Heinz
    Bitte sehr, gern geschehen! Gruß owT
    11.04.2012 20:50:26
    Luc:-?
    :-?
    Übrigens, die grafische Darstellung des Objekt...
    12.04.2012 01:30:45
    Luc:-?
    …modells in der VBE-Hilfe ist da recht aufschlussreich! ;-)
    Luc :-?

    341 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige