Dass einzige, was mich noch stört ist, wenn ich einen Sollteg rot markiere (Urlaub) soll er die Schriftfarbe weiss machen. Lösche ich den Urlaubstag wieder soll er die Schriftfarbe wieder rot machen.
Habe jetzt schon unzälige Sachen getestet, nur ohne Erfolg.
If Target.Interior.ColorIndex = 3 And Intersect(Target, Range("G12:L12, N12:S12, U12:Z12, AB12:AG12, G22:L22, N22:S22, U22:Z22, AB22:AG22, G32:L32, N32:S32, U32:Z32, AB32:AG32")) Is Nothing Then Else .Font.ColorIndex = 3 End If Else Target.Interior.ColorIndex = xlNone
Da könntest Du die Farbe einbauen
Code:
If Target.Interior.ColorIndex = 3 And Intersect(Target, Range("G12:L12, N12:S12, U12:Z12, AB12:AG12, G22:L22, N22:S22, U22:Z22, AB22:AG22, G32:L32, N32:S32, U32:Z32, AB32:AG32")) Is Nothing Then .Font.ColorIndex = xx 'weiße nummer Else .Font.ColorIndex = 3 End If Else Target.Interior.ColorIndex = xlNone
Nur könntest Du das besser machen erst mal auf alle Tage beschränken, wenn Hintergrundfarbe 3, dann Schriftfarbe weiß
Code:
If Target.Interior.ColorIndex = 3 And Not Intersect(Target, Range("G6:L12, N6:S12, U6:Z12, AB6:AG12, G16:L22, N16:S22, U16:Z22, AB16:AG22, G26:L32, N26:S32, U26:Z32, AB26:AG32")) Is Nothing Then .Font.ColorIndex = xx 'weiße nummer Else 'Montag bis Freitag schwarz If Not Intersect(Target, Range("G6:L10, N6:S10, U6:Z10, AB6:AG10, G16:L20, N16:S20, U16:Z20, AB16:AG20, G26:L30, N26:S30, U26:Z30, AB26:AG30")) Is Nothing .Font.ColorIndex = xx 'schwarz 'Samstage blau .... 'Sonntage rot .... End If Else Target.Interior.ColorIndex = xlNone
Ist aber jetzt nicht getestet, soll die Vorgehensweise veranschaulichen. Eventuell tust Du das zwischen Deinen Ifs und Elses noch verschieben...
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Ausgangssituation: Tag mit Termin rot markiert (Urlaubstag) und andere Tage rot markiert
Urlaubstage wieder löschen (Doppelklick)
Problem:
Wurde ein Tag mit Termin rot markiert (Urlaubstag) und lösche einen andere rot markierten Tage wieder, werden alle rot markierten Tage erstmal selectet.
Wenn sich jetzt in diesen rot markierten Tagen mindestens ein Termin-Tag befindet, wird das Userform geöffnet.
Wie kann ich das verhindern.
er soll ja das Userform nur öffnen, wenn ich direkt auf einen Urlaubs oder Termintag klicke.
wenn Du die Codes etwas einrücken und vielleicht noch kommentieren würdest, würdest Du da besser durchsehen. Kommentare im Code sind auch eine Art Beschreibung. Leerzeilen hast Du ja genug gelassen. Könnte so aussehen. Ich schreibe übrigens an einem End(e) (oder Next bei einer Schleife) in der Regel den Kommentar vom Anfang, damit man weiß, wozu es gehört. Beim Else auch, er wird da aber sinngemäß abgewandelt.
Code:
'wenn die aktive (selektierte) Zelle nicht leer ist und in der Hilfstabelle A4 nix steht (Name Feiertag), dann If aktive_zelle <> "" And Sheets("Hilfstabelle").Range("A4") <> "" Then 'Wenn die selektierte Zelle nicht zum Bereich G6:Af32 gehört, dann If Intersect(Target, Range("G6:AF32")) Is Nothing Then 'Oder Wenn die selektierte Zelle zum Bereich G6:Af32 gehört Else 'Datum in die Hilfstabelle uebertragen Sheets("Hilfstabelle").Range("A1") = ActiveCell.Value 'Userform anzeigen UserForm1.Show 'Ende Wenn die selektierte Zelle nicht zum Bereich G6:Af32 gehört, dann End If 'Ende wenn die aktive (selektierte) Zelle nicht leer ist und in der Hilfstabelle A4 nix steht (Name Feiertag), dann End If
Könntest Du mal für alle Zeilen dieses Makros machen. Darunter kommt ja noch mal eine Bedingung, bei der das UF angezeigt werden könnte. Dann überlegst Du, ob die Bedingungen korrekt sind. Von anderen Verbesserungen sehe ich erst mal ab, wie gesagt, schaue Dir den Ablauf erst mal genau an. Und auch wieder der Hinweis mit F8. Setze z.B. am Anfang in der ersten Zeile, die was macht, einen Haltepunkt, gehe mit F8 weiter und schaue, was da gemacht wird.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
... hatte ich vergessen - Dein beschriebenes Problem kann ich nicht nachvollziehen
z.B. Du hast einen Termin am 15. Mai
Doppelklick von mir am 12., 13., 14,. 16. --> alles ok Doppelklick auf 13. --> fast alles ok, nur dieser Tag ist betroffen und die anderen bleiben wie gehabt, die Schriftfarbe wird nicht gesetzt, sonst passt es ... Button Urlaubstge löschen --> fast ok, die Schriftfarbe wird nicht gesetzt, sonst passt es ...
Im code fehlt im Prinzip das, was ich unter #43 im dritten codeteilgeschrieben habe mit den Schriftfarben Schwarz, blau und rot... Du könntest das Färben oben kurz nach der Msgbox einbauen, also in etwa sieht es dann so aus:
Code:
If MsgBox("Sollen wirklich alle markierten Urlaubstage gelöscht werden?", vbQuestion + vbYesNo, "Urlaubstage löschen") = vbYes Then
Set Bereich = Range("$G$6:$L$12, $N$6:$S$12, $U$6:$Z$12, $AB$6:$AG$12, $G$16:$L$22, $N$16:$S$22, $U$16:$Z$22, $AB$16:$AG$22, $G$26:$L$32, $U$26:$Z$32, $AB$26:$AG$32, $N$26:$S$32") Bereich.Interior.Color = xlNone