bedingte Formatierung über VBA

Bild

Betrifft: bedingte Formatierung über VBA
von: André
Geschrieben am: 07.05.2015 14:34:09

Hallo zusammen,
ich habe eine ziemlich umfangreiche Tabelle. Personalplanung einer Schule für das ganze Jahr (ja ja ich weiß, dafür ist excel nicht geschaffen. Aber uns bleibt nichts anderes übrig ;-( ))
Es soll also für ca. 40 Leute und einem Tabellenblatt pro Woche Planungen dargestellt werden. Bei bestimmten Einträgen soll sich die Zelle verfärben. Anzahl der Standardisierten Einträge ca. 300 :-(
Über die bedingte Formatierungen (bF) wird die Tabelle zu langsam. Lässt sich das auch über VBA steuern? Und wenn ja, spare ich dadurch Datengröße der Tabelle ein? Und wie kann ich das machen?
Falls jemand einen Lösungsansatz schreiben möchte, ich habe kaum Ahnung von VBAs. Bitte am besten einen Code in Klartext angeben.
Noch mal das Ziel: Die Zellen sollen anhand einer Liste von Kriterien (z.B. A, B, DD, EE, ZZ) diese mit einer bestimmten Farbe versehen.
Vielen Dank für die Hilfe und Anregungen.
Grüße André

Bild

Betrifft: bitte Musterdatei anfertigen
von: Matze Matthias
Geschrieben am: 07.05.2015 15:20:01
Hallo Andre,
machbar ist vieles und auch bestimmt deine Aufgabenstellung.
Du musst uns aber schon mal eine Musterdatei des Aufbaues geben, damit man genau weis welche Zellen davon betroffen sind. Deine Kriterien würde ich Raten als Legende zu führen.
Gruß Matze

Bild

Betrifft: AW: bitte Musterdatei anfertigen
von: André
Geschrieben am: 07.05.2015 15:45:20
Hallo Matze,
eine Legende habe ich verwendet.
Ich kann hier leider keine Exceldatei hochladen :-/ Gibt es eine andere Möglichkeit?
Grüße André

Bild

Betrifft: AW: bitte Musterdatei anfertigen
von: André
Geschrieben am: 07.05.2015 15:45:24
Hallo Matze,
eine Legende habe ich verwendet.
Ich kann hier leider keine Exceldatei hochladen :-/ Gibt es eine andere Möglichkeit?
Grüße André

Bild

Betrifft: AW: bitte Musterdatei anfertigen
von: Matze Matthias
Geschrieben am: 07.05.2015 22:04:03
Hallo Andre,
sicher kannst du hier einen FileUpload bringen, unter dem Eingabefeld ist ein Button der dich weiterleitet. Dort lies genau was dort steht dann klappt das auch.
Hier mal ein Code der in den angegebenen verschiedenen Bereichen die Formatierung so übernimmt wie es in der Legende dargestellt wird. In diesem Beispiel stehlt die Legende in Zeile 2
Ab der Spalte 5 bis 32 im 3er Schritt würden dann die Einträge der Legende stehen.
Diese Codezeilen gehören in das Tabellenblatt welches betroffen ist.

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

  Dim rc As Range
  Dim lx As Long

  Application.EnableEvents = False
' Hier die Bereiche definieren die von der BF betroffen sind 
  If Intersect(Target, Range("F15:AJ18,F22:AJ25,F29:AJ34,F39:AJ56,F61:AJ78,F83:AJ100")) Is Nothing Then Exit Sub
  
  For Each rc In Target.Cells
    For lx = 5 To 32 Step 3 'von 5Spalte bis 32 Spalte im 3er Schritt angeordnete Legende 
        If rc.Value = Cells(2, lx).Value Then ' Legende befindet sich in der 2ten Zeile 
        ' ab hier folgt die Formatierung 
              rc.Interior.ColorIndex = Cells(2, lx).Interior.ColorIndex 'Hintergrundfarbe 
              rc.Font.ColorIndex = Cells(2, lx).Font.ColorIndex 'Schriftfarbe 
              rc.Font.Bold = Cells(2, lx).Font.Bold = True 'Fettschrift 
              rc.Font.Italic = Cells(2, lx).Font.Italic = True 'Kursiv 
            bSet = True 'Formatierung gesetzt 
        End If
    Next lx
    If Not (bSet) Then rc.Interior.ColorIndex = xlNone 'ohne Formatierung 
  Next
    Application.EnableEvents = True
End Sub
Gruß Matze

 Bild

Beiträge aus den Excel-Beispielen zum Thema "bedingte Formatierung über VBA"