Hallo zusammen
Im Bereich VBA kenne ich mich leider noch überhaupt nicht aus, da ich bis anhin nur mit Formeln gearbeitet habe... nun stosse ich nur mit den Formeln aber an die Grenzen des machbaren und somit mit VBA leider auch an meine Grenzen...
Ich habe bereits viel online recherchiert, jedoch leider ohne Erfolg, da ich zwar ähnliches gefunden habe, dies aber nicht exakt auf mein Problem umschlüsseln kann. Ich hoffe nun, dass ihr mir helfen könnt.
Ausgangslage:
Ich mache einen Dienstplan für meine Mitarbeiter.
In Spalte B stehen die Namen der Mitarbeiter. (B4= erster Name / B19 = letzter Name)
In der Zeile 3 steht das Datum (C3 = 01.01.2021 / NC3 = 31.12.2021)
Wochenenden sowie Feiertage werden automatisch farblich markiert (bedingte Formatierung)
Im Bereich C4:NC19 können diverse Buchstaben erfasst werden. Bsp: F = Ferien, K = Krank, etc.
Ich will, dass wenn ich an einem Montag ein F erfasse, dies für die ganze Woche erfasst wird. Aktuell habe ich das mit folgender Formel gelöst:
Formel in D4: „=WENNFEHLER(WENN(WENN(WOCHENTAG(D$3;2)>5;““;C4)=0;““;WENN(WOCHENTAG(D$3;2)>5;““;C4));““)“
Problemstellung:
Wenn die einzelne Zelle überschrieben wird ist logischerweise die Formel weg und es gibt einen Unterbruch.
Ziel: Wenn eine Zelle überschrieben wird, soll dieser Wert drin stehen und in die folgenden Spalten übernommen werden, bis dort wo ein neuer Wert eingesetzt wird und ab dort soll dieser Wert übernommen werden. Wenn die Zelle aber mittels „Delete“ geleert wird, soll default wieder die Formel eingesetzt werden.
Beispiel: Am Montag wird ein F erfasst. Dienstag bis und mit Freitag haben automatisch auch ein „F“. Am Mittwoch wird nun ein „K“ erfasst. Montag und Dienstag = „F“, Mittwoch bis Freitag = „K“. Wenn jetzt das „K“ am Mittwoch gelöscht wird, soll dort sowie am Donnerstag und Freitag wieder automatisch ein „F“ erscheinen. Aktuell ist es aber so, dass Mittwoch bis Freitag dann leer bleiben.
Nebeninfo: Ich habe versucht mich mit VBA auseinanderzusetzen und folgenden Code geschrieben:
Sub xyz()
ThisWorkbook.Worksheets(„Dienstplan AD“.Activate
Dim i As Integer
For i = 4 To 367
If Weekday(Cells(3, i), vbMonday) < 6 Then
If Cells(4, i).Value = „“ Then
Cells(4, i).FormulaR1C1Local = „=wenn((ZS(-1))=0;““““;(ZS(-1)))“
End If
Else
Cells(4, i).Value = „“
End If
Next
End Sub
Hier ist allerdings das Problem, dass die Schleife sehr lange dauert, nur auf einer Zeile angewendet wird und immer manuell gestartet werden muss.
Ziel sollte sein, dass sobald eine Zelle geleert wird, automatisch die Formel wieder ergänzt wird.
Ich hoffe irgendjemand von euch kann mir helfen und ich bedanke mich jetzt schon herzlich :)
Beste Grüsse und hoffentlich bis bald
Ernst
|