Bedingte Formatierung Tabellenblatt übergreifend

Bild

Betrifft: Bedingte Formatierung Tabellenblatt übergreifend von: Bettina Lichtenstein
Geschrieben am: 16.03.2005 15:48:54

Hallo Zusammen,

ich bin dabei eine Tabelle zur Dienstplanung zu erstellen. In dem Tabellenblatt "Jahresplan" befindet sich ein Kalender. Der Dienst für den jeweiligen Mitarbeiter wird erfasst, in dem "f" für Frühdienst, "s" für Spätdienst, "u" für Urlaub usw. in die entsprechende Zelle eingetragen wird. Über ein Makro für bedingte Formatierung (es sind insgesamt 8 Bedingungen notwendig) wird die Zelle dann farblich gekennzeichnet. Bis dahin funktioniert auch alles bestens. Da im Jahresplan auch Zeiten wie Krank, Urlaub usw. erfasst werden, diese aber nicht jeden was angehen und ich eine doppelte Datenpflege vermeiden möchte, habe ich ein Blatt "Intranet" angelegt, welches alle relevanten Daten aus dem "Jahresplan" beinhaltet. Im Blatt Intranet läuft das gleiche Makro wie im "Jahresplan" mit dem Unterschied, dass Urlaub, Krank usw. einen weißen Hintergrund und weiße Schrift erhält (somit unsichtbar wird). Dieses wird automatisch im Intranet veröffentlicht. Nun zu meinem Problem. Werden Änderungen im "Jahresplan" vorgenommen erfolgt keine bedingte Formatierung im Blatt "Intranet".
Hier das Makro zum besseren Verständnis:


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'   SCHRIFT
'   für Hintergrund RaZelle.Interior.ColorIndex
    Dim RaBereich As Range, RaZelle As Range
'   Bereich der Wirksamkeit
    Set RaBereich = Range("B3:AF6,B8:AF11,B13:AF16,B19:AF22,B24:AF27,B29:AF32,B35:AF38,B40:AF43,B45:AF48,B51:AF54,B56:AF59,B61:AF64")
    For Each RaZelle In Range(Target.Address)
'       überprüfen ob Zelle im vorgegebenen Bereich
        If Not Intersect(RaZelle, RaBereich) Is Nothing Then
'           Farbe entfernen
            RaZelle.Interior.ColorIndex = 0
            RaZelle.Font.ColorIndex = 0
'           Zellen färben
            Select Case RaZelle.Value
                Case "f"
                With Selection.Interior
                    .ColorIndex = 36
                    .Pattern = xlSolid
                End With
                    Selection.Font.ColorIndex = 36
                Case "g"
                With Selection.Interior
                    .ColorIndex = 35
                    .Pattern = xlSolid
                End With
                    Selection.Font.ColorIndex = 35
                Case "s"
                With Selection.Interior
                    .ColorIndex = 34
                    .Pattern = xlSolid
                End With
                    Selection.Font.ColorIndex = 34
                Case "w"
                With Selection.Interior
                    .ColorIndex = 40
                    .Pattern = xlSolid
                End With
                    Selection.Font.ColorIndex = 40
                Case "u"
                With Selection.Interior
                    .ColorIndex = 45
                    .Pattern = xlSolid
                End With
                    Selection.Font.ColorIndex = 45
                Case "m"
                With Selection.Interior
                    .ColorIndex = 43
                    .Pattern = xlSolid
                End With
                    Selection.Font.ColorIndex = 43
                Case "d"
                With Selection.Interior
                    .ColorIndex = 33
                    .Pattern = xlSolid
                End With
                    Selection.Font.ColorIndex = 33
                Case "k"
                With Selection.Interior
                    .ColorIndex = 38
                    .Pattern = xlSolid
                End With
                    Selection.Font.ColorIndex = 38
'               usw.
                Case Else
                    RaZelle.Font.ColorIndex = 0
            End Select
        End If
    Next RaZelle
    Set RaBereich = Nothing
End Sub


Für Hilfe wäre ich Euch wirklich sehr dankbar.

Gruß Bettina
Bild


Betrifft: AW: "bedingte Formatierung" von: Luc
Geschrieben am: 16.03.2005 16:14:48

Hallo Bettina,
warum steht bei den einzelnen Cases stets Selection...? Nur Case Else ist richtig! Du benutzt for each mit Laufvariablenobjekt und setzt es dann gar nicht ein! Stattdessen die zufällige Selection.
Übrigens ist deine Verwendung des Begriffs "bedingte Formatierung" irreführend. Du trägst mit dem Makro eine (variable) Festformatierung ein. Eine echte bedingte Formatierung ist ganz anders aufgebaut! Und die wäre dann auch nicht mappen(/blatt-?)übergreifend möglich.
Gruß Luc :-?


Bild


Betrifft: AW: Bedingte Formatierung Tabellenblatt übergreifend von: Bettina Lichtenstein
Geschrieben am: 16.03.2005 16:23:02

Hallo luc,

dieses "Makro" habe ich nicht selber geschrieben, sondern hier auf Herber Excel-CD und es hat bis dahin auch gut funktioniert. Von VBA habe ich so gut wie Null Ahnung.
Wenn ich ein doppelklick auf die aktualisierte Zelle mache und dann mit Enter abschließe, funktioniert es ja auch in dem Blatt "Intranet". Eben nur nicht aus eigener Kraft und über einen Butten kann ich es auch ablaufen lassen.

Gruß Bettina


Bild


Betrifft: Dann trifft's nicht dich, sondern den, der... von: Luc
Geschrieben am: 16.03.2005 16:53:47

...eine for each Schleife verwendet hat, ohne sie eigentlich zu verstehen. Ersetze innerhalb der Schleife (bis Next RaZelle) alle Selection... durch RaZelle..., auch nach With. Das es vorher bzw mit manuellem Eingriff fkt hat, hängt mit der dadurch ausgewählten Zelle zusammen - es war zufällig die richtige. Um solche Zufälle möglichst auszuschließen, testen Programmierer ihre Programme unter unterschiedlichsten Bedingungen und trotzdem wdn auch nach 20 Jahren noch Fehler gefunden, weil eine besonders spezielle Bedingung erst dann eintrat. Aber keine Angst, dein Programm ist dafür nicht komplex genug.
Ciao Luc :-?


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Bedingte Formatierung Tabellenblatt übergreifend"