bedingte formartierung

Dieses Thema bedingte formartierung im Forum "Microsoft Office Suite" wurde erstellt von hans jupp, 3. Mai 2004.

Thema: bedingte formartierung hallo, heute wieder mal eine frage zu excel 2002. über die bedingte formartierung kann man von haus aus 3 regeln...

  1. hallo,

    heute wieder mal eine frage zu excel 2002.

    über die bedingte formartierung kann man von haus aus 3 regeln festlegen. ich bräuchte aber mehrere.

    es geht darum, in einer tabelle, abhängig vom inhalt den zellenhintergrund farbig zu gestalten.

    beispielsweise:
    1=gelb
    2=rot
    3=blau
    4=grün
    5= ...

    vielen dank schon mal für eure hilfe ;D
     
  2. hi kath.hundefriseursalon,

    für mehr als 3 bedingte Formatierungen benötigst Du einen Makro. Der kann folgendermassen aussehen:
    Code:
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
      Const c_spalte = 3->entspricht C
      Dim z As Range
      For Each z In Target
        With z
          If .Column = c_spalte Then
            If 1 = .Value Then
              .Interior.ColorIndex = 36->hellgelb 6->gelb
            ElseIf 2 = .Value Then
              .Interior.ColorIndex = 38->hellrot  3->rot
            ElseIf 3 = .Value Then
              .Interior.ColorIndex = 37->hellblau 5->blau
            ElseIf 4 = .Value Then
              .Interior.ColorIndex = 35->hellgrün 4->grün
            Else ->sonst
              .Interior.ColorIndex = xlColorIndexAutomatic
            End If
          End If
        End With
      Next
    End Sub
    
    a) mit Alt+F11 den VB-Editor öffnen
    b) im Projektfenster mit Doppelklick auf die Tabelle das Codefenster der Tabelle öffnen
    c) das Makro per copy&paste in das Codefenster kopieren
    d) die konstante c_spalte auf die gewünschte Zeilennummer setzen
    e) mit Strg+S speichern
    f) mit Alt+Q VB-Editor schliessen

    Gruß Matjes :)
     
  3. hallo matjes,

    vielen dank erst mal für die ausführliche hilfe.

    leider fehlt mir ein bischen der durchblick bei makros.

    könntest du mir daher bitte punkt c noch mal genauer erklären?
    bei mir stehen die werte in spalte j4 bis j34.
     
  4. hi kath.hundefriseursalon,

    hab den Makro so angepasst, daß Spalte J, Zeile 4-34 überwacht wird.
    Ist der Zellwert der geänderten Zelle
    1 -> Zellhintergrund hellgelb setzen
    2 -> Zellhintergrund hellrot setzen
    3 -> Zellhintergrund hellblau setzen
    4 -> Zellhintergrund hellgruen setzen
    sonst -> Zellhintergrund farblos setzen
    Code:
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
     ->die Konstanten schränken den überwachten Bereich ein:
     ->Spalte J, Zeile 4-34 - kann entsprechend abgeändert werden
      Const c_Spalte = 10->entspricht Spalte J
      Const c_Zeile_anf = 4 
      Const c_Zeile_end = 34
      Dim z As Range
      For Each z In Target
        With z
          If .Column = c_Spalte Then
            If (c_Zeile_anf <= .Row) And (.Row <= c_Zeile_end) Then
              
             ->Zelle liegt im überwachten Bereich
             ->auf Wert prüfen und Zellhintergrund entspr. setzen
              If 1 = .Value Then
                .Interior.ColorIndex = 36->hellgelb 6->gelb
              ElseIf 2 = .Value Then
                .Interior.ColorIndex = 38->hellrot  3->rot
              ElseIf 3 = .Value Then
                .Interior.ColorIndex = 37->hellblau 5->blau
              ElseIf 4 = .Value Then
                .Interior.ColorIndex = 35->hellgrün 4->grün
              Else ->sonst
                .Interior.ColorIndex = xlColorIndexNone
              End If
    
            End If
          End If
        End With
      Next
    End Sub
    
    Um den Makro auf deiner Tabelle wirksam werden zu lassen, muß du ihn in das Code-Fenster der Tabelle schreiben.
    Das geht folgendermassen:

    a) zunächst die Mappe mit der entsprechenden Tabelle in Excel öffnen

    b) mit Alt+F11 den VB-Editor öffnen

    c) im Projektfenster mit Doppelklick auf die Tabelle das Codefenster der Tabelle öffnen

    d) das Makro per copy&paste in das Codefenster kopieren.
    Dazu alles innerhalb des grauen Rahmens (hier im Thread) selektieren -> rechte Maustaste -> Kopieren
    Den Cursor in das Code-Fenster der Tabellen (siehe c))setzen -> rechte Maustaste -> Einfügen

    e) ggf. die Konstanten c_Spalte, c_Zeile_anf, c_Zeile_end anpassen

    f) mit Strg+S speichern

    g) mit Alt+Q VB-Editor schliessen

    h) auf dem Tabellenblatt die Funktion des Makros prüfen


    Gruß Matjes :)
     
  5. hi matjes,

    vielen dank jetzt habe ich es verstanden und es funktioniert :)


    ich habe noch ein paar kleine änderungen vorgenommen. dabei ist mir aufgefallen, daß jedesmal, wenn man einen . schreibt, sich ein pulldown-fenster öffnet - sind das die vb-befehle?

    da das ganze so gut funktioniert, kann man das makro auch so abändern, daß sich abhängig vom wert der spalte j die komplette zeile von a bis l ändert - oder ist das sehr aufwendig?
     
  6. hi kath.hundefriseursalon,

    Zu deiner Frage mit dem Punkt:
    In dem Makro vorher ist ein Zeilenpaar->With z' und->End With' enthalten. z ist ein Objekt, nämlich die einzelne geänderte Zelle. Es folgen diverse Zeilen, die sich auf z beziehen. Um nicht jedesmal z schreiben zu müssen, gibt es die->With'-Anweisung. Man setzt ein Objekt (hier z), das bis zur->End With'-Anweisung gültig ist. In allen Zeilen dazwischen braucht man dann nur noch .Eigenschaft statt z.Eigenschft zu schreiben.
    Man kann immer nur ein Objekt in dieser Schreibweise abkürzen. Ineinandergeschachtelte->With/End With'-Anweisungen sind verboten.

    Wenn Du also innerhalb der->With/End With'-Anweisung einen Punkt geschrieben hast, ist das gleichbedeutend mit->z.', woraufhin der VB-Editor eine Liste der Objekte/Eigenschaften für dieses Objekt zur Auswahl stellt.

    Im Makro unten habe ich die->With'-Anweisung für z aufgelöst und stattdessen eine für den zu markierenden Bereich geschrieben.

    In diesem Beispiel wird der Zellhintergrund in den Zellen A-L der geänderten Zeile gesetzt.

    Gruß Matjes :)

    Code:
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
     ->die Konstanten schränken den überwachten Bereich ein:
     ->Spalte J, Zeile 4-34 - kann entsprechend abgeändert werden
      Const c_Spalte = 10->entspricht Spalte J
      Const c_Zeile_anf = 4
      Const c_Zeile_end = 34
     ->Spalte, die markiert werdensollen
      Const c_Sp_von = 1->entspricht Spalte A
      Const c_Sp_bis = 12->entspricht Spalte L
      Dim z As Range
      For Each z In Target
        If z.Column = c_Spalte Then
          If (c_Zeile_anf <= z.Row) And (z.Row <= c_Zeile_end) Then
           ->Zelle liegt im überwachten Bereich
           ->auf Wert prüfen und Zellhintergrund entspr. setzen
            With ActiveSheet.Range(Cells(z.Row, c_Sp_von), Cells(z.Row, c_Sp_bis))
              If 1 = z.Value Then->hellgelb
                .Interior.ColorIndex = 36
              ElseIf 2 = z.Value Then->hellrot
                .Interior.ColorIndex = 38
              ElseIf 3 = z.Value Then->hellblau
                .Interior.ColorIndex = 37
              ElseIf 4 = z.Value Then->hellgrün
                .Interior.ColorIndex = 35
              Else ->sonst
                .Interior.ColorIndex = xlColorIndexNone
              End If
            End With
          End If
        End If
      Next
    End Sub
    
     
  7. hi matjes,

    vielen dank nochmal für deine hilfe :)

    du hast mir wirklich sehr geholfen.

    hast du vielleicht noch einen tip, wo/wie man sich gut und einfach über vb informieren kann, bzw. das lernen kann?
     
  8. hi matjes,

    ich kenn den thread, habe da ja auch schon gepostet ;)

    ich dachte du hättest vielleicht sonst noch einen heißen tip ...


    trotzdem noch mal vielen dank :)
     
  9. ... und einen nachtrag hätte ich noch

    ich hätte gerne, daß wenn der wert x in der abfrage vorkommt, daß dann die bestehende formartierung bleibt und nichts verändert wird.
    leider habe ich in der hilfe nichts gefunden ...

    ElseIf x = nix ändern ::)
     
Die Seite wird geladen...

bedingte formartierung - Ähnliche Themen

Forum Datum
Excel 2010 - Filter, bedingte Formatierung Windows 7 Forum 27. Okt. 2014
Bedingte Formatierung Excel 2010 bei Datum Microsoft Office Suite 11. Okt. 2012
hardwarebedingte Ausfälle? Hardware 23. Okt. 2011
Excel Tabelle -> Word mit bedingter Formatierung Microsoft Office Suite 21. Dez. 2010
Bedingte Formatierung Excel 2007 Microsoft Office Suite 19. Apr. 2010