Anzeige
Archiv - Navigation
1412to1416
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
Inhaltsverzeichnis

Bedingte Formatierung mit Text

Bedingte Formatierung mit Text
03.03.2015 20:46:58
Debian
Hallo Zusammen :-)
Für mein Dienstplanprogramm bräucht ich eure Hilfe :-)
Via bedingter Formatierung werden die Sonntage eingefärbt und aus einer Liste mit Feiertagen und Daten für Events werden via bedingter Formatierung ebenfalls eingefärbt. Ich würde nun gerne auch die Namen der Feiertage und Events in den Dienstplanblättern in Zeile 3 anzeigen lassen. Wie kann ich das umsetzen?
Musste die Mappe "massakrieren", damit sie kleiner als 300 kb wurde ;-)

Die Datei https://www.herber.de/bbs/user/96135.xlsm wurde aus Datenschutzgründen gelöscht


Merci für eure Hilfe.
Grüsse aus Zürich.
Debian

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Sicher mit der Fml, die du im BedingtFormat ...
04.03.2015 05:27:14
Luc:-?
…einsetzt, Debian,
natürlich entsprd angepasst und als ZellFml verwendet.
Damit habe ich mich aber nicht weiter beschäftigt, weil mir etwas Anderes aufgefallen ist. Du verwendest auch eine ZellFml mit der UDF Farbsumme. Solche UDFs findet man ja bekanntlich im INet, aber ich habe den Eindruck, dass du versucht hast, sie an deine Zwecke anzupassen. Nur ist diese Anpassung aus meiner Sicht untauglich. Wozu gibst du als Argument2 einen FarbIndex an, wenn der dann in der UDF gar nicht verwendet wird? Den kannst du in einer ZellFml dann auch straflos weglassen, ohne dass er optional sein muss. Allerdings fktt die UDF so ohnehin nicht und würde wohl auch in der ursprünglichen Fassung falsche Werte liefern, weil sie mit FarbIndizes arbeitet, was ab xl12/2007 sträflicher Leichtsinn ist, weil diese mehrfach für ganz unterschiedliche Farben auftauchen können. So auch hier, AI6 u.AI7 haben den gleichen FarbIndex 15!
Deshalb habe ich diese UDF mal überarbeitet und dabei etwas universalisiert. Was sie jetzt kann, steht als Anmerkung über ihrer Kopfzeile. Die Fml in Zelle AM81 könnte dann bspw so aussehen:
=FarbSumme(AI4:AI81;9944773)*8.4 bzw =FarbSumme(AI4:AI81;;A86:A97)*8.4
Oder auch so: =FarbSumme(AI4:AI81;;A86:A97;AH4)*8.4
Das entspräche dann wohl am ehesten deinen Vorgaben. Wolltest du in diesem Fall nur eine relevante Farbe zählen, müsstest du als Arg3 auch nur diese eine Zelle innerhalb der ansonsten relevanten angeben, also hier so: =FarbSumme(AI4:AI81;;A96;AH4)*8.4
Alle FarbAngaben in Arg2, die =0 oder >56 sind, wdn als BGR-Farbwert, alle anderen >0 als FarbIndex behandelt. Das Prüfen auf farblose Zellen ist nur per Farbwert für Weiß möglich!

Rem Zählt alle Zellen in Arg1, die entweder Farbe lt Arg2 haben oder deren Farbe in Arg3 auf-
'   tritt, wobei in dsm Fall m.Arg4 auch d.1.Zelle 1es zusätzl KontrollBereichs angebbar ist.
'   FremdFkt überarbeitet & universalisiert: 20150304, LSr:CyWorXxl
Function FarbSumme(Bereich As Range, Optional ByVal Farbe As Long = -1, Optional ByVal _
relFarbBereich As Range, Optional ByVal KontrollZelle1 As Range)
Dim isAdd As Boolean, isAll As Boolean, isCtrl As Boolean, isColor As VbTriState, _
arRelColor() As Long, ix As Long, spVersatz As Long, zlVersatz As Long, _
Zelle As Range, wf As WorksheetFunction
On Error Resume Next: Application.Volatile: Set wf = WorksheetFunction
isColor = CInt(Farbe >= 0) + CInt(Farbe = 0 Or Farbe > 56)
isAll = Not (CBool(isColor) Or relFarbBereich Is Nothing)
isCtrl = isAll And Not KontrollZelle1 Is Nothing
If isAll Then
ReDim arRelColor(relFarbBereich.Cells.Count - 1)
For Each Zelle In relFarbBereich
arRelColor(ix) = Zelle.Interior.Color: ix = ix + 1
Next Zelle
End If
If isCtrl Then
zlVersatz = KontrollZelle1.Row - Bereich.Row
spVersatz = KontrollZelle1.Column - Bereich.Column
End If
For Each Zelle In Bereich
Select Case isColor
Case vbUseDefault: Let isAdd = Zelle.Interior.Color = Farbe
Case vbTrue:  Let isAdd = Zelle.Interior.ColorIndex = Farbe
Case vbFalse: isAdd = False
If isAll Then
isAdd = wf.Match(Zelle.Interior.Color, arRelColor, 0)
If isCtrl Then isAdd = isAdd And Zelle.Interior.Color = _
Zelle.Offset(zlVersatz, spVersatz).Interior.Color
End If
End Select
FarbSumme = FarbSumme - CInt(isAdd)
Next Zelle
Set wf = Nothing
End Function
Das Application.Volatile wird dir bei FarbÄnderungen aber nur nutzen, wenn du anschld in irgendeine (Leer-)Zelle klickst. Das kann man aber auch mit dem Vorsatz von 1^JETZT()* am Fml-Anfang erreichen.
Gruß aus D.BB.TF.BM.AB1, Morrn, Luc :-?

Anzeige
AW: Bedingte Formatierung mit Text
04.03.2015 06:26:12
Luschi
Hallo Debian,
habe Dir die bedingte Formatierung für die Feiertage mal in den Monat Fanuar eingebaut.
Dazu habe ich im Bereich 'Legenden und Wegleitung'!G5:H15' eine formatierte Tabelle angelegt und 'Feiertage' genannt und den definierten Namen 'FT' auf diese Liste umgeleitet.
Zum Ausprobieren habe ich in der Feiertagsliste den 09.01.2015 zum 'Test-Feiertag' erklärt, um zu sehen, ob die Formel für die bedingte Formatierung greift: =WENNFEHLER(SVERWEIS(D$1;FT;1;0);FALSCH)
https://www.herber.de/bbs/user/96138.xlsm
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Bedingte Formatierung mit Text
04.03.2015 09:57:37
Debian
Hallo Zusammen:-)
Merci für beide Antworten. Vielleicht hab ich mich falsch ausgedrückt. Das Einfärben der Feiertage funktioniert bereits. Ich möchte einfach zusätzlich in Zeile 3, passend zum eingefärbten Datum den jeweiligen Namen des Feiertages oder des Ereignisses aus 'Legende und Wegleitung', Spalten H und J, anzeigen lassen.
Staatliche Feiertage werden wie Sonntage dunkelrot gefärbt, sonstige Events aus Spalte I sind hellrot. Ich möchte lediglich die Namen der Feiertage/Events in den Monatsblättern in Zeile 3 zufügen. Bislang hab ich die immer manuell reingeschrieben.
-----------------------------
Zur Farbsumme:
Luc: Da hast Du recht! Und es hat mich damals schier zur Weissglut getrieben, bis das funktionierte. Ich schau mir Deine Lösung für dieses Problem in Ruhe an, damit ich verstehe, was Du gemacht hast. Danke Dir dafür! :-)
Merci im Voraus:-)
Debian

Anzeige
Das hatte ich zumindest auch verstanden und ...
04.03.2015 14:03:34
Luc:-?
…dir einen darauf bezogenen Tipp gegeben, Debian;
zu mehr habe ich momentan keine Zeit.
In deiner abgespeckten Datei hätte deine Farbsumme übrigens auch ein Ergebnis liefern müssen, was sie aber nicht tat; mit meiner Neufassung aber schon…
Luc :-?

AW: Bedingte Formatierung mit Text
07.03.2015 00:27:57
Debian
Hallo und guten Abend :-)
Leider ist mein Problem mit den Feiertagen noch aktuell :-( Fällt niemanden etwas dazu ein, wie ich die Feiertage, passend zum Datum in Zeile 3 einblenden kann? Ich hab alles mögliche gegooglet, aber dazu find ich einfach keine passende Antwort :-(
Nochmals zusammengefasst:
Blatt mit Dienstplan (Januar, Februar etc.): Feiertage und Events (gelistet im Blatt 'Legende und Wegleitung' in zwei getrennten Doppelspalten (jeweils Datum und Bezeichnung)) färben via bedingter Formatierung die jeweiligen Tage in den Dienstplan-Blättern ein.
In den Dienstplan-Blättern möchte ich in Zeile 3 für jeden Feiertag und jeden Event auch den Namen übertragen.
Wie kann ich das machen?
Merci für eure Hilfe :-)
Grüsse.
Debian

Anzeige
AW: Bedingte Formatierung mit Text
07.03.2015 10:26:52
Debian
BTW: Die Problematik ist auch diese: In Zeile 3 dürfen KEINE Formeln stehen, da dort auch manuell Informationen geschrieben werden (Hinweise auf Veranstaltungen im Betrieb etc.). Also muss irgendwie eine Verbindung hergestellt werden, das, wenn die Spalte bei einem bestimmten Datum wegen eines Feiertags oder Events eingefärbt wird (Daten hinterlegt in Blatt 'Legende und Wegleitung'), dann soll die Bezeichnung des betreffenden Datums nach Zeile 3 in der jeweiligen Spalte angezeigt werden. Ich verzweifle bald daran :-/

Teste noch, wird VBA! Gruß owT
08.03.2015 05:02:24
Luc:-?
:-?

AW: Teste noch, wird VBA! Gruß owT
08.03.2015 10:07:36
Debian
Supiii, ich danke Dir :-)))

Anzeige
So, fertig! War schwere Geburt, die mir auch ...
10.03.2015 00:10:07
Luc:-?
…gleich noch eine neue Erkenntnis zu Xl12/2007 und dem hier erstmalig installierten bedingten ZahlenFormat gebracht hat:
Das wird man nur schwer wieder los, oft nicht durch einfaches Inhalte löschen. Auch wdn solch einfache DarumsformatAngaben wie T nicht akzeptiert → daraus wird \T mit der Folge, dass in jeder Zelle, die die Bedingung erfüllt, nur T steht. Viell lag's auch daran, dass das Format auch die anderen Zeilen, die kein Datum enthielten, einschloss. Deshalb musste ich diese Regel neu anlegen, weshalb ich bei der Gelegenheit gleich das Regel-Chaos auf Blatt2 geordnet habe: alle nicht-relevanten Regeln gelöscht, die HEUTE-Regel auf Priorität1 gesetzt und alle signierungs­abhängigen Regeln danach in der Reihenfolge der Legende angeordnet, dabei noch die fehlende MI-Regel eingefügt und diese Regeln auf einfacheres Zellwert enthält bestimmten Text umgestellt, während die FT-/Event-Regeln auf den beiden letzten Prioritäten verblieben.
Die Bereinigung der Regeln auf den anderen (Monats-)Blättern überlasse ich dir. Dazu einfach mal die jeweiligen Blätter, nicht den aktuellen Bereich auswählen, dann siehst du auch das xl12-typische, vom Formate-Übertragen herrührende Chaos!
Ansonsten habe ich auch die aktuelle Version der UDF FarbSumme eingefügt und zumindest die Fml auf Blatt2 in eine sinnvollere Fassung gebracht.
Ich habe in den einzelnen Modulen (Dokument­Klassen­Module der intern zu ArbPlanD umbenannten Mappe und Blatt14 und Modul Allgemein) globale Konstanten, Variablen und eine Enumeration hinzugefügt (im ganzen Projekt wirken sich nur die in Allgemein aus!), außerdem natürlich EreignisProzeduren, ein DienstPgm in Allgemein und ein Hilfspgm in ArbPlanD. Außerdem enthalten alle Module Beschreibungen der Wirkungs­weise und Hinweise, die mit --> beginnen.
Desweiteren fügen die Pgmm 2 verborgene und einen offenen Namen hinzu, die jetzt natürlich bereits vorhanden sind. Auf die durch deine Manipulation der Zelle AG1000 verursachte unnötige Ausweitung des UsedRange kannst du verzichten, wenn du stattdessen den verborgenen Namen verwendest, auf den von mir hingewiesen wird.
Der offene Name bezeichnet eine Konstante mit Werten von -2 bis 1 (bzw -1 bis 2), die regeln, ob für FT u/o Events ein Lang- bzw Kurztext ausgegeben wdn soll. Falls das deine Zustimmung findet, sollten weitere Texte auf Blatt14 auch in der jetzt zu sehenden Form hinzugefügt wdn. Die jetzige (automatische Standard-)Einstellung ist 1, d.h., 2stelliger Kurztext für FT und Langtext für Events. Wird ein Text ohne das spezifische 2stellige Trennzeichen eingetragen, wird immer nur dieser verwendet, unabhängig von der Einstellung. Den Namenswert kannst du ansonsten selbst manuell festlegen.
Im Wert des anderen verborgenen Namens wird der Aktualisierungsstand dieser Texte gemerkt. Auf die Modalitäten weise ich in den Anmerkungen hin.
So, jetzt ist nur noch zu hoffen, dass keine Panne auftritt und du das alles auch im Archiv noch wiederfindest. Denn gleich verschwindet dieser Thread aus dem Forum. Würde mich freuen, wenn du es schaffst, trotzdem noch zu antworten. Das geht sogar in diesem Thread noch einige wenige Tage, wenn du seine Forumsform öffnen kannst.
Gibt's irgendwelche Probleme, melde dich am besten in einem neuen Thread.
Übrigens ist deine ursprüngliche Datei auf dem Server verloren gegangen (passiert leider abundzu, evtl PgmFehler). Aber hiermit ist ja wieder eine da, hoffentlich!
Übrigens, dass MONAT so wie von dir in D1 gezeigt, fktionieren kann, wusste ich auch noch nicht… ;-)
Gruß, Luc :-?

Anzeige
AW: So, fertig! War schwere Geburt, die mir auch ...
10.03.2015 00:22:13
Debian
Holla die Waldfee! Warum sollte der Thread so rasch verschwinden? Ich muss das erst mal ales "verdauen", also verstehen, was Du da gemacht hast. Bis ich Deine Neigung zu Abkürzungen durchblickt hab, ist es morgen Vormittag ;-)
Wie geht denn die "ursprüngliche Datei" auf dem Server verloren?
Du schreibst so oft 'Rem' - was heisst das?
Grüssle und vielen Dank schon mal von meiner Seite :-)
Ringo

In der Nacht zum 7.Tag nach Thread-Erstellung ...
10.03.2015 21:57:20
Luc:-?
…gelangt der Thread in den nicht mehr im aktuellen Forum angezeigten Bereich, Ringo;
dort ist er idR noch einige Tage erreichbar, wenn man die Adresse hat (bzw mit dieser benachrichtigt wird; möglicherweise gibt's ab diesem ZeitPkt auch keine Benachrichtigung mehr?). Irgendwann wird er endgültig gelöscht und kann nur noch im Archiv, in dem man nicht mehr antworten kann, betrachtet wdn. Das hat wohl mit dem Zweck, zu dem HWH das Alles betreibt, und der dafür gewählten Organisationsform zu tun.
So viele Abkürzungen sind's ja nicht und auch stets dieselben… ;-)
Wie eine Datei verloren gehen kann, weiß ich auch nicht, nur, dass es eben auch passieren kann. Der Server bietet dann eine ähnlich benannte Datei an, wobei er einen Zahlendreher vermute → so auch hier. Allerdings hatte ich sie noch im DownLoad-Cache-Bereich der HD.
Remark, dt. Anmerkung, der übliche VBA-Ausdruck für PgmKommentare. Den verwende ich immer dann (zumindest in der 1.Zeile eines solchen Blocks), wenn es sich um eine gewollte feste Anmerkung handelt (alternativ 'Anm: in Befehlszeilen), um sie von temporären Anmerkungen und Auskomentierungen von PgmZeilen zu unterscheiden, die ich idR zum Schluss wieder entferne (bis mitunter auf gelegentliche Angabe eines KorrekturDatums).
Ansonsten bitte sehr und „gute Verdauung“…! ;-)
Gruß, Luc :-?
Anzeige

346 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige