Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Selektierte WE und Feiertag-Zellen automatisch mit entsprechender Farbe füllen
#1
Hi,

wie zum Kuckuck kriege ich den ("LÖSCHEN"-Button)-Code

Code:
Sub SchraffierungOhne()
'
' Keine_Schraffierung Makro
' in markierten Zellen Schraffierung entfernen
'
   With Selection.Interior
       .Pattern = xlNone
       .TintAndShade = 0
       .PatternTintAndShade = 0
   End With
End Sub

so ergänzt, dass die Zellen im selektierten Bereich, die in Sa- oder So-Zeilen liegen,

mit diesem Grau

Code:
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.249946592608417
        .PatternTintAndShade = 0
    End With

oder im Falle eines Feiertags

mit dieser Farbe


Code:
    With Selection.Interior
        .PatternColorIndex = xlAutomatic
        .Color = 8573690
        .TintAndShade = 0
    End With

gefüllt werden?

Das Blatt "Feiertage" ist ausgeblendet.

Zur Erklärung: Die Kollegen markieren zur besseren Übersicht Arbeitszeitblöcke. Daher muss in den WE- bzw. Feiertag-Zellen die Bedingte Formatierung erst gelöscht werden (das erledigen in einem die Füllung-Buttons). Werden die Füllungen dann wieder gelöscht, entstehen Lücken. Die Dienstpläne sehen dann zerhäckselt aus. Viele Kollegen sind computer- und vor allem exceltechnisch völlig unbedarft, daher diese Datei.

Wäre toll, wenn das geht, das ist das einzige, was noch fehlt.

Gruß
Uwe


Angehängte Dateien
.xltm   DP_AZA VORLAGE.xltm (Größe: 159,29 KB / Downloads: 15)
Antworten Top
#2
Hallo,

im allgemeinen sollte man die EDV dazu verwenden, komplizierte Dinge zu vereinfachen. Warum, um alles in der Welt, gehen so viele Excelanwender den umgedrehten Weg?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#3
Hallöchen,

Vorschlag:

Du verzichtest auf die bedingte Formatierung und färbst gleich alles per Makro.

Zum Nachfärben nimmst Du eine Schleife. Im Prinzip

Code:
For Each Zellen in Selection
  'zuerst auf Wochenende prüfen
  If Zellen.Value = Wochenende Then
    'Farbe Grau setzen
    '...
   End If
  'dann auf Feiertag prüfen
  'zuerst auf Wochentag prüfen
  If Zellen.Value = Feiertag Then
    'Diese Farbe setzen
    '...
   End If
Next

So was in der Art könntest Du auch in Deinem jetzigen Code einsetzen, wenn Du dabei bleiben willst.
Wenn das Datum nicht in der Zelle steht, z.B. oben in Zeile 1, dann prüfst Du natürlich nicht den Zelleneintrag sondern das, was oben steht, z.B. Cells(1, Zellen.Column).Value


Kommst Du mit den Ansätzen zurecht? Deine Datei hab ich nicht angeschaut.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Ich weiß nicht genau wie du das meinst Klaus-Dieter. Die ganze Datei existiert nur, weil manche Kollegen null Computer-Erfahrung haben. Die Komplexität der Vorlage ergibt sich daraus, dass für den Anwender praktisch alles automatisch geht. Bis auf diesen einen Punkt. Und das stört vor allem mich!

Danke schauan, ich werde bei der ersten Gelegenheit versuchen, deinen Vorschlag umzusetzen.

Gruß Uwe
Antworten Top
#5
Ich habe mich leider nicht klar ausgedrückt. Die Zellen selbst haben kein Datum. Jede Zelle im selektierten Bereich, in deren Zeile in der Spalte B "Sa" oder "So" steht, also die Werte 7 oder 1, müssen eingefärbt werden. Ich habe leider nicht gefunden wie das geht.

Gruß
Antworten Top
#6
Hallo Uwe,

die Bedingte Formatierung hat Vorrang vor manueller Formatierung. Deine Makros funktionieren ja vielleicht, nur sieht man das nicht, solange die Zelle(n) gleichzeitig bedingt formatiert ist/sind.
Wenn also manuelle selektive Formatänderungen möglich sein sollten, darf es keine Bedingten Formatierungen gleichzeitig geben.

Gruß Uwe
Antworten Top
#7
Ach so ja, sorry - aufgrund der Bedürfnisse der Anwender, die unbedingt Zeitblöcke farblich markieren wollen/müssen, habe ich Buttons installiert, die in selektierten Zellen zuerst die bedingte Formatierung löschen und sie dann einfärben. Daher das ganze Jedöns.

Ich kann mich auf den Kopf stellen, ich finde keinen Code, der für jede selektierte Zelle abcheckt, ob sie in einer Wochenend-Zeile liegt, ob also in der jeweils betreffenden Zeile in Spalte B "Sa" oder "So" steht, und sie dann einfärbt.

Gruß Uwe
Antworten Top
#8
Hallo Uwe,

(04.04.2019, 08:44)CaptainNemo schrieb: Ich kann mich auf den Kopf stellen, ich finde keinen Code, der für jede selektierte Zelle abcheckt, ob sie in einer Wochenend-Zeile liegt, ob also in der jeweils betreffenden Zeile in Spalte B "Sa" oder "So" steht, und sie dann einfärbt.

so für Deinen obigen Code:
Sub SchraffierungOhne()
'
' Keine_Schraffierung Makro
' in markierten Zellen Schraffierung entfernen
'
 Dim rngZ As Range
 For Each rngZ In Selection.Rows
   If Weekday(Cells(rngZ.Row, 2).Value, vbMonday) < 6 Then
     With rngZ.Interior
       .Pattern = xlNone
       .TintAndShade = 0
       .PatternTintAndShade = 0
     End With
   Else
     With rngZ.Interior
       .Pattern = xlSolid
       .PatternColorIndex = xlAutomatic
       .ThemeColor = xlThemeColorDark1
       .TintAndShade = -0.249946592608417
       .PatternTintAndShade = 0
     End With
   End If
 Next rngZ
End Sub
Feiertage fehlen halt noch.
Das greift wie gesagt aber nur, wenn keine Bed. Formatierung vorliegt.

Gruß Uwe
Antworten Top
#9
Genial! - Die Zellen sind dann ja ohne bed. Formatierung. Ich erklär's später nochmal.

Ich antworte erst jetzt, weil ich vergeblich versucht habe, den

=SVERWEIS($B5;Feiertage;2;FALSCH)="x"

in den If-Block einzubinden. Dass die Bezeichungen in VBA andere sind, weiß ich.

Gruß Uwe
Antworten Top
#10
Ok, so:

Code:
Sub SchraffierungErsetzen()
'
' SchraffierungErsetzen Makro
' in markierten Zellen Schraffierung entfernen und ersetzen
'
Dim rngZ As Range, Feiertag As Range
For Each rngZ In Selection.Rows
   Set Feiertag = Sheets("Feiertage").Range("Feiertage").Find(what:=Cells(rngZ.Row, 2), LookIn:=xlValues, lookat:=xlWhole)
   If Not Feiertag Is Nothing Then
       With rngZ.Interior
           .Pattern = xlSolid
           .PatternColorIndex = xlAutomatic
           .Color = 49407
           .TintAndShade = 0
           .PatternTintAndShade = 0
       End With
   Else
       If Weekday(Cells(rngZ.Row, 2).Value, vbMonday) < 6 Then
           With rngZ.Interior
               .Pattern = xlNone
               .TintAndShade = 0
               .PatternTintAndShade = 0
           End With
       Else
           With rngZ.Interior
               .Pattern = xlSolid
               .PatternColorIndex = xlAutomatic
               .ThemeColor = xlThemeColorDark1
               .TintAndShade = -0.249946592608417
               .PatternTintAndShade = 0
           End With
       End If
   End If
   Set Feiertag = Nothing
Next rngZ
End Sub
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste