Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
608to612
608to612
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Bedingte Formatierung mit mehr als drei Bedingunge

Bedingte Formatierung mit mehr als drei Bedingunge
06.05.2005 22:22:57
Beppo
Hallo liebe Execlfreunde,
da Excel Standardmäßig nur drei bedingte Formatierungen zulässt, habe ich folgendes Makro im Internet gefunden, welches ich auf die Zelle C10 anwende.
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
With Range("C10")
If .Value = "G" Then
.Interior.ColorIndex = 4
.Font.ColorIndex = 4
ElseIf .Value = "R" Then
.Interior.ColorIndex = 3
.Font.ColorIndex = 3
ElseIf .Value = "TU" Then
.Interior.ColorIndex = 8
.Font.ColorIndex = 1
ElseIf .Value = "So" Then
.Interior.ColorIndex = 15
.Font.ColorIndex = 15
ElseIf .Value = "Sa" Then
.Interior.ColorIndex = 15
.Font.ColorIndex = 15
ElseIf .Value = "F" Then
.Interior.ColorIndex = 15
.Font.ColorIndex = 15
Else
.Interior.ColorIndex = 2
.Font.ColorIndex = 1
End If
End With
End Sub

Soweit so gut: Aber wie kann ich diese Formatierung auf die Zellen C10:AR29 anwenden, ohne dieses Makro für jede Zelle (840 mal) einzeln einzugeben?
Danke für Eure Hilfe
MfG Beppo

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bedingte Formatierung mit mehr als drei Beding
06.05.2005 22:39:10
Reinhard
Hallo Beppo,
ungetestet:

Private Sub Worksheet_Change(ByVal Target As Range)
if intersect(target, range("C10:AR29") is nothing then exit sub
With target
If .Value = "G" Then
.Interior.ColorIndex = 4
.Font.ColorIndex = 4
ElseIf .Value = "R" Then
.Interior.ColorIndex = 3
.Font.ColorIndex = 3
ElseIf .Value = "TU" Then
.Interior.ColorIndex = 8
.Font.ColorIndex = 1
ElseIf .Value = "So" Then
.Interior.ColorIndex = 15
.Font.ColorIndex = 15
ElseIf .Value = "Sa" Then
.Interior.ColorIndex = 15
.Font.ColorIndex = 15
ElseIf .Value = "F" Then
.Interior.ColorIndex = 15
.Font.ColorIndex = 15
Else
.Interior.ColorIndex = 2
.Font.ColorIndex = 1
End If
End With
End Sub

Gruß
Reinhard
Anzeige
AW: Bedingte Formatierung mit mehr als drei Bedingunge
06.05.2005 22:40:29
Klaus-Dieter
Hallo Beppo,
versuche es mal so:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Select Case ActiveCell
Case "G"
With ActiveCell
.Interior.ColorIndex = 4
.Font.ColorIndex = 4
End With
Case "R"
With ActiveCell
.Interior.ColorIndex = 3
.Font.ColorIndex = 3
End With
Case "TU"
With ActiveCell
.Interior.ColorIndex = 8
.Font.ColorIndex = 1
End With
Case "So"
With ActiveCell
.Interior.ColorIndex = 15
.Font.ColorIndex = 15
End With
Case "Sa"
With ActiveCell
.Interior.ColorIndex = 15
.Font.ColorIndex = 15
End With
Case "F"
With ActiveCell
.Interior.ColorIndex = 15
.Font.ColorIndex = 15
End With
End Select
End Sub

Der Wirkbereich des Makros läßt sich mit der Anweisung Intersect eingrenzen.
Viele Grüße Klaus-Dieter

Online-Excel
Anzeige
AW: Bedingte Formatierung mit mehr als drei Bedingunge
06.05.2005 22:46:13
Kurt
ElseIf .Value = "R" Then
.Interior.ColorIndex = 3
.Font.ColorIndex = 3
ElseIf .Value = "TU" Then
Roter Adler auf roten Grund?
mfg Kurt
AW: Bedingte Formatierung mit mehr als drei Beding
06.05.2005 23:02:16
Luc:-?
Hallo Beppo,
du hast das Makro bereits angepasst ohne dass du seine Funktionsweise richtig kennst! Es handelt sich hierbei um eine Ereignisprozedur, die in das (Klassen-)Modul des Blattes gehört und nur dann (und wenn Ereignisbehandlung nicht abgestellt wurde) bei jeder Änderung des Arbeitsblattes ausgelöst wird und sich dann auf die Zielzelle der Änderung (Target) auswirkt. D.h., wenn du Range("C10") durch Target ersetzt, wdn deine Befehle auf jede Zelle angewendet, die gerade aktiv geändert wird. Wenn du das aber auf den angegebenen Bereich beschränken willst, musst du zuvor mit Intersect feststellen, ob Target in diesem Bereich liegt. Da das dann aber nur bei Änderung der Zellen funktioniert, empfehle ich SelectionChange, dabei müsstest du die Zellen, aber jedesmal, wenn sich was ändert erst auswählen. Dann vielleicht besser beide Ereignisse benutzen. Oder du verwendest das Calculate-Ereignis als Auslöser. Da steht dir dann aber Target nicht zur Verfügung und du müsstest deinen Bereich mit einer For Each Schleife abfragen. Du kannst deiner Prozedur allerdings auch einen normalen Namen geben, das Private weglassen und sie in dem Basismodul, in dem sie jetzt wohl steht, belassen. Aber die Schleife musst du dann auf jeden Fall hinzufügen. Das Makro kannst du dann auch auf einen Button legen. Nach jeder Änderung müsstest du dann den Button klicken, damit sich die Farben aktualisieren. Dieses Vorgehen wäre übrigens auch deinem Kenntnisstand angemessen. Ereignisprozeduren können leicht kaskadieren, wenn man sich damit nicht auskennt und sie falsch einsetzt.
Mit den hiermit gegebenen Stichworten dürftest du auch im Forumsarchiv mehr als fündig wdn.
Gruß Luc :-?
Anzeige
AW: Bedingte Formatierung mit mehr als drei Beding
06.05.2005 23:09:10
Beppo
Danke für die zahlreichen Antworten!
Der Vorschlag von Reinhard hat super funktioniert:-)
Die anderen Vorschläge werde ich auf jeden Fall auch noch testen!
MfG Beppo

364 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige