Bedingte Formatierung mit mehr als 3 Bedingungen
B1=A, Wert in D1=Auto oder B1= F, D1=Fahrrad
Die Eingabe soll immer in B1 erfolgen, die vollständige
Anzeige des Wertes jedoch
in D1 erscheinen. Insgesamt sollten 5 verschiedene
Darstellungen in D1 möglich sein
und möglichst auch noch farblich unterlegt (Fahrrad: grün;
Auto: blau; usw.)
Hallo Michael,
zunächst mal das Negative, Titel wie dein „Dringend Hilfe gesucht!!!“,
bringen dir zunächst mal sofort das Eine, sehr viele Leute, die durchaus antwortbereit/fähig wären schauen nicht hinein, weil sie ihre Zeit nicht mit unklaren Postings verschwenden, und nicht nur ihre eigene Zeit, auch die Zeit anderer.
In der Zeit in der man in einige Postings ala „Hiiiiiiiiiiilfe“ „WichtiG“ und ähnlich sinnlos hereinschaut weil es um Dinge geht die man nicht kann, kann man schon Leuten helfen, die sich Gedanken über ihr Betreff machten und die ein Thema haben wo man helfen kann…
Weiterhin ist so ein Betreff auch deshalb unüberlegt und unsozial, denn jemand der später mal das Gleiche oder ein ähnliches Problem hat, wird evtl hilfreiche Antworten darauf nie im Archiv finden. Insofern betrifft es dich direkt, mit Sicherheit war die bedingte Formatierung schon oft hier Thema, aber alle Beiträge und Lösungen die unter nichtssagenden Titel im Archiv schlummern findet keiner mehr, sprich, die Vorgänger von dir die ähnlich betitelten, nahmen dir die Chance, sofort per Archiv-Recherche Antwort zu erhalten.
Es gäb da noch mehr dazu zu sagen, auch zu den dreifachen Ausrufezeichen, aber egal, sollen nur Tipps sein, kannst sie annehmen bzw. darüber nachdenken wenn du magst.
Okay, zum Thema, kein Problem, mit VBA kannst du unbegrenzt bedingte Formatierung nachstellen.
Ich weiss jetzt nicht ob du dich mit VBA auskennst, ist aber auch nicht wirklich wichtig, denn die Anwendung meines nachfolgenden VBA-Codes ist nicht schwierig.
Am besten, du machst zum Testen des Codes nur eine neue leere Exceltabelle auf, und gehst auf Tabellenblatt „Tabelle1“.
Dort wechselst du mit Alt+F11 in den VB-Editor. Links siehst du dann
Tabelle1, dort doppelt draufklicken.
Rechts erscheint ein großes leeres weißes Feld (wenn nicht, F7 drücken), dorthinein kopierst du den untenstehenden Code komplett mit Strg-C…Strg-V…
Wieder mit Alt+F11 in Tabelle1 gelandet gib mal nacheinander A F X Y Z
oder beliebiges in B1 ein und schau was sich jeweils in D1 tut.
Der untenstehende Code besteht aus zwei getrennt zu sehenden Sub-Routinen. Die erste macht das was du wolltest, bedingte Formatierung von D1 aufgrund von B1.
In der Zeile „select case range(„b1“)“ wird gepüft was in B1 drinsteht.
Falls dort A drinsteht (Case „A“) werden die drei Zeilen nach Case „A“ ausgeführt, bei „F“ die drei Zeilen nach Case"F" usw.
Die drei Zeilen nach „Case Else“ legen fest was geschieht wenn weder A noch F noch X usw in B1 drinstehen.
Die jeweiligen drei zeilen sind wie folgt aufgebaut,
Range(„D1“).Interior.ColorIndex = … legt die Füllfarbe vo D1 fest.
Range(„D1“).Font.ColorIndex = … legt die Schriftfarbe von D1 fest.
Range(„D1“).Value = … legt den Inhalt von D1 fest
Weiterhin gilt, alles was nach einem Apostroph steht, sind reine Bemerkungen (remarks), dorthin kannst du schreiben was du willst.
Es bietet sich in diesem Fall dort zu vermerken welche Farbe denn 2 usw. bedeutet, damit man bei Betrachtung des Codes in 2 Wochen gleich weiss um was es geht.
Im Case Else Zweig ist Range(„D1“).Value = „“ noch mit dem Apostroph als Bemerkung gekennzeichnet.
Wenn du es so lässt bleibt in Zelle das drin stehen was drin steht, mit weisser farbe und automatischer Schrift. Wenn du dort das Apostroph entfernst, wird der Inhalt von zelle D1 gelöscht, wenn nicht in B1 exakt A oder F oder … steht.
Das wars schon zur bedingten Formatierung, bin berühmt für kurze knappe Erläuterungen *g
Mit diesem Hintergrundwissen ist es dann für dich ein Klacks, die Farben festzulegen, du musst ja nur die jeweilige FarbNummer eintragen.
Um herauszufinden, welche Farbe welche farbwerte hat, dazu dient die zwetite Prozedur, sub FarbenZeigen.
Einfach den Cursor irgendwo, völlig gleich wo, in den Code von Sub Farbenzeigen stellen und F5 drücken, die Sub wird ausgeführt und mit Alt+F11 siehst du das Ergebnis in Tabelle1.
Das kannst du ja abspeichern, ausdrucken usw.
Gruß
Reinhard
Private Sub Worksheet\_Change(ByVal Target As Excel.Range)
If Target.Address(False, False) "B1" Then Exit Sub
Select Case Range("B1")
Case "A"
Range("D1").Interior.ColorIndex = 5 'blaue Fläche
Range("D1").Font.ColorIndex = 2 'weiße Schrift
Range("D1").Value = "Auto"
Case "F"
Range("D1").Interior.ColorIndex = 4 'grün
Range("D1").Font.ColorIndex = 1 'schwarz
Range("D1").Value = "Fahrrad"
Case "X"
Range("D1").Interior.ColorIndex = 7
Range("D1").Font.ColorIndex = 12
Range("D1").Value = "Roller"
Case "Y"
Range("D1").Interior.ColorIndex = 23
Range("D1").Font.ColorIndex = 37
Range("D1").Value = "Skibob"
Case "Z"
Range("D1").Interior.ColorIndex = 36
Range("D1").Font.ColorIndex = 0
Range("D1").Value = "Vipschaukel"
Case Else
Range("D1").Interior.ColorIndex = xlNone 'keine
Range("D1").Font.ColorIndex = 0 'automatisch
'Range("D1").Value = ""
End Select
End Sub
Sub FarbenZeigen()
Range(„F1“).Value = „ZellenFarbe“
Range(„G1“).Value = „Farbwert“
Range(„H1“).Value = „SchriftFarbe“
For n = 0 To 56
Cells(2 + n, 6).Interior.ColorIndex = n
Cells(2 + n, 7).Value = n
Cells(2 + n, 8).Font.ColorIndex = n
Cells(2 + n, 8).Value = „ABCDEFGHIJKLmnopqrstuvwxyz1234“
Next n
End Sub