Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
584to588
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
584to588
584to588
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bedingte Formatierung Tabellenblatt übergreifend

Bedingte Formatierung Tabellenblatt übergreifend
16.03.2005 15:48:54
Bettina
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

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "bedingte Formatierung"
16.03.2005 16:14:48
Luc
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 :-?
AW: Bedingte Formatierung Tabellenblatt übergreifend
16.03.2005 16:23:02
Bettina
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
Anzeige
Dann trifft's nicht dich, sondern den, der...
16.03.2005 16:53:47
Luc
...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 :-?
Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige