Anzeige
Archiv - Navigation
1956to1960
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

Urlaubstage in Monatsblätter eintragen

Urlaubstage in Monatsblätter eintragen
05.01.2024 11:48:26
Peer
Hallo zusammen.
Nach langer Zeit wollte ich mich mit angehängter Datei von einem User hier aus dem Forum beschäftigen, und passte es ein wenig an, um es später in mein vorhandenes Projekt aufzunehmen.
Ich habe es mit meinen bescheidenen VBA-Kenntnissen noch nicht ganz zum korrekten Laufen gebracht und kann aktuell nicht die Ursache herausfinden.
Inzwischen habe ich durch dauerndes Ausprobieren den Überblick verloren und komme nicht weiter.

In der Datei geht es darum, in den Monatsblättern, das mit Eingabe einer Jahreszahl in "Urlaub" K1 jedes Jahr aktualisiert wird, Urlaub, der im Blatt "Urlaub" in die Monatsblätter eingetragen werden soll. Dabei soll an Wochenenden und Wochenfeiertage "Ruhe" stehen, sonst "Urlaub".

Analog möchte ich dies auch bei "krank" erzeugen, dass dafür extra Spalten im Sheet "Urlaub" bekam.

Jedenfalls macht er keine Einträge in die Monatsblättern. Ich vermute, das beim Abgleichen des UTag und des SuchTag das Problem ist.
Wenn ja, warum? Formatierung war mein erster Gedanke.

Ich stelle einmal das Beispiel rein mit der Hoffnung, dass mir jemand helfen kann.

Dafür möchte ich mich schon einmal bedanken.
https://www.herber.de/bbs/user/165909.xlsm
Gruß Peer

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Urlaubstage in Monatsblätter eintragen
05.01.2024 15:26:40
onur
Nix für Ungut, aber SO würde ich es nicht machen.
Wenn du nur EIN Blatt fürs ganze Jahr hättest, wäre alles enorm einfacher.
AW: Urlaubstage in Monatsblätter eintragen
06.01.2024 12:15:08
Fuzzy-Pow
Hi Peer.

Ich hab's im Debugger nach gespielt; warum ".Range("B12:B42").Find(CDbl(UTag), LookAt:=xlWhole)" nichts findet kann ich auch nicht beantworten; da es in der Beschreibung zu Find volgendemasen lautet "Der Inhalt, nach dem gesucht werden soll. Dabei kann es sich um eine Zeichenfolge oder einen beliebigen Microsoft Excel-Datentyp handeln.", ...


UTag As Date ' ist ein beliebiger Datentyp !!!

sUTag = Str(wks.Cells(i, 1))
With Sheets(Monat)
Set suchTag = .Range("B12:B42").Find(UTag, LookAt:=xlPart) 'suche in Spalte B
Stop
Set suchTag = .Range("B12:B42").Find(sUTag, LookAt:=xlWhole) 'suche in Spalte B
'wenn Suche leer
If Not suchTag Is Nothing Then

... also Date ist für mich ein beliebiger Excel-Datentyp.

Wenn ich das ganze auf String umstelle (auch in den Monatstabellen), dann funktioniert es mit Range.Find().
.Range("B12:B42").Find(sUTag, LookAt:=xlWhole)   'suche in Spalte B


In diesem Fall ist für mich die einfachste Lösung die Suche über eine ForEach-Schleife zu realisieren.
            For Each xRng In .Range("B12:B42")

If xRng.Value = UTag Then
Set suchTag = xRng
Exit For
End If
Next


Ich hab das jetzt nur bei URLAUB getestet, den restlichen Code habe ich nicht überprüft
https://www.herber.de/bbs/user/165918.xlsm
Gruß Fuzzy
Anzeige
AW: Urlaubstage in Monatsblätter eintragen
07.01.2024 22:59:24
Piet
Hallo Peer

kurz und bündig, dein Code und der vom Kollegen sieht sehr modern aus, da blicke ich nicht überall durch. Habe ihn gelassen!
Diese alte Code Variante aus der Zeit Excel 95/97, altmodisch, sollte es aber tun. Bitte mal bei dir testen ob alle Fehler raus sind.

mfg Piet

Option Explicit

Dim Tag1 As Variant, Tag2 As Integer
Dim Monat As String, Monat2 As String

Sub Urlaubstage_eintragen()
Dim AC As Range, a, e, i As Integer

With Worksheets("Urlaub")
'** kann man ggf. löschen
Call Urlaubstage_löschen

For Each AC In .Range("A3:A10")
Tag1 = Day(AC.Cells(1, 1))
Tag2 = Day(AC.Cells(1, 2))
Monat = Format(AC.Value, "MMMM")
Monat2 = Format(AC.Cells(1, 2), "MMMM")

'End Datum für Monat suchen
If Monat2 > Monat Then e = 42
If Monat2 = Monat Then
For e = 12 To 42
If Day(Worksheets(Monat).Cells(e, 2)) = Tag2 Then Exit For
Next e
End If

'Anfangs Datum für Monat suchen
For a = 12 To 42
If Day(Worksheets(Monat).Cells(a, 2)) = Tag1 Then Exit For
Next a

'Monat Anfangs- bis Enddatum ausfüllen
For i = a To e 'Aussprung bei Monatsende 31
If Worksheets(Monat).Cells(i, 2) = "" Then Exit For
Tag1 = Format(Weekday(Worksheets(Monat).Cells(i, 2), 1), "ddd")
If Tag1 = "Sa" Or Tag1 = "So" Then
Worksheets(Monat).Cells(i, 4) = "Ruhe"
Else
Worksheets(Monat).Cells(i, 4) = "Urlaub"
End If
Next i

'ggf. Monat2 1.Tag bis Enddatum ausfüllen
If Monat2 > Monat Then
For i = 12 To 42 'Aussprung bei Monatsende 31
If Day(Worksheets(Monat2).Cells(i, 2)) = Tag2 Then Exit For
Tag1 = Format(Weekday(Worksheets(Monat2).Cells(i, 2), 1), "ddd")
If Tag1 = "Sa" Or Tag1 = "So" Then
Worksheets(Monat2).Cells(i, 4) = "Ruhe"
Else
Worksheets(Monat2).Cells(i, 4) = "Urlaub"
End If
Next i
End If
Next AC
End With
End Sub

Sub Urlaubstage_löschen()
Dim j As Integer
For j = 1 To 12
Monat = Format(CDate("1." & j & ".2024"), "MMMM")
Worksheets(Monat).Range("D12:D42").ClearContents
Next j
End Sub

Anzeige
AW: Urlaubstage in Monatsblätter eintragen
08.01.2024 18:33:37
Peer
Hallo Piet.

Entschuldige die späte Antwort. Erster Arbeitstag und viel zu tun. Da muss das Private leider hinten angestellt werden.

Danke für deinen Code, auch wenn er nicht modern zu sein schein ;-)

Ich habe deinen Code einen Button zugeordnet und gestartet. Auf dem ersten Blick schein er besser zu laufen, aber leider musst ich auch hier feststellen, das nicht alles korrekt durchläuft.
  • Januar Anfang und Ende passt
  • Februar Anfang passt, Ende (hier 05.03.) wird nur bis zum 04.03. eingetragen
  • April Anfang passt, Ende nur bis 01.05 (eigentlich 02.05.)
  • Mai Anfang und Ende passt
  • Juni Anfang und Ende passt
  • Juli Anfang und Ende passt
  • August Anfang und Ende passt
  • Dezember Anfang und Ende passt.

  • Also immer, wenn der Monatswechsel ist, fehlt der reguläre letzte Tag.
    Also habe ich den Code ein wenig angepasst.
    Einmal habe ich den Bereich der Spalte A im Blatt Urlaub erweitert und zweitens noch
    -1
    hinzugefügt.
            'ggf. Monat2 1.Tag bis Enddatum ausfüllen
    
    If Monat2 > Monat Then
    For i = 12 To 42 'Aussprung bei Monatsende 31
    If Day(Worksheets(Monat2).Cells(i - 1, 2)) = Tag2 Then Exit For
    Tag1 = Format(Weekday(Worksheets(Monat2).Cells(i, 2), 1), "ddd")
    If Tag1 = "Sa" Or Tag1 = "So" Then
    Worksheets(Monat2).Cells(i, 4) = "Ruhe"
    Else
    Worksheets(Monat2).Cells(i, 4) = "Urlaub"
    End If
    Next i
    End If


    Ich hoffe, er läuft jetzt dauerhaft.
    Hier nochmal das Ergebnis...
    Sub Urlaubstage_eintragen()
    
    Dim AC As Range, a, e, i As Integer

    With Worksheets("Urlaub")
    '** kann man ggf. löschen
    Call Urlaubstage_löschen

    For Each AC In .Range(.Cells(3, 1), .Cells(.Rows.Count, 1).End(xlUp))
    Tag1 = Day(AC.Cells(1, 1))
    Tag2 = Day(AC.Cells(1, 2))
    Monat = Format(AC.Value, "MMMM")
    Monat2 = Format(AC.Cells(1, 2), "MMMM")

    'End Datum für Monat suchen
    If Monat2 > Monat Then e = 42
    If Monat2 = Monat Then
    For e = 12 To 42
    If Day(Worksheets(Monat).Cells(e, 2)) = Tag2 Then Exit For
    Next e
    End If

    'Anfangs Datum für Monat suchen
    For a = 12 To 42
    If Day(Worksheets(Monat).Cells(a, 2)) = Tag1 Then Exit For
    Next a

    'Monat Anfangs- bis Enddatum ausfüllen
    For i = a To e 'Aussprung bei Monatsende 31
    If Worksheets(Monat).Cells(i, 2) = "" Then Exit For
    Tag1 = Format(Weekday(Worksheets(Monat).Cells(i, 2), 1), "ddd")
    If Tag1 = "Sa" Or Tag1 = "So" Then
    Worksheets(Monat).Cells(i, 4) = "Ruhe"
    Else
    Worksheets(Monat).Cells(i, 4) = "Urlaub"
    End If
    Next i

    'ggf. Monat2 1.Tag bis Enddatum ausfüllen
    If Monat2 > Monat Then
    For i = 12 To 42 'Aussprung bei Monatsende 31
    If Day(Worksheets(Monat2).Cells(i - 1, 2)) = Tag2 Then Exit For
    Tag1 = Format(Weekday(Worksheets(Monat2).Cells(i, 2), 1), "ddd")
    If Tag1 = "Sa" Or Tag1 = "So" Then
    Worksheets(Monat2).Cells(i, 4) = "Ruhe"
    Else
    Worksheets(Monat2).Cells(i, 4) = "Urlaub"
    End If
    Next i
    End If
    Next AC
    End With
    End Sub

    Sub Urlaubstage_löschen()
    Dim j As Integer
    For j = 1 To 12
    Monat = Format(CDate("1." & j & ".2024"), "MMMM")
    Worksheets(Monat).Range("D12:D42").ClearContents
    Next j
    End Sub


    Den Code von Fuzzy muss ich mir auch noch anschauen. Denn ich würde gern beide zum Laufen bringen und dadurch verstehen, was wie funktioniert.

    Gruß Peer

    Anzeige
    AW: Urlaubstage in Monatsblätter eintragen
    06.01.2024 14:37:09
    Peer
    Hallo Fuzzy.

    Vielen Dank für deine Antwort und deiner Hilfe.
    Meine Vermutung mit dem Datentyp war also doch richtig?

    Leider bekomme ich das nicht so zum Laufen, wie gewollt.
    Egal, wie ich es auskommentiere und wieder "einschalte". Das Ergebnis ist für mich nicht zufriedenstellend.

    Ich möchte in der Spalte D den Urlaub eintragen lassen, der im Blatt "Urlaub" eingetragen ist. Nun soll geprüft werden, ob in Spalte B jedes Monatsblattes der Tag mit dem Urlaubstag übereinstimmt. Wenn ja, dann soll geprüft werden, ob der suchTag ein Wochenende/Feiertag ist (also rote Schrift). Wenn ja, dann trage in Spalte D "Ruhe" ein, sonst "Urlaub".

    Es ist beim Ausprobieren noch ein weiteres Problem aufgetreten. Wenn der "geplante" Urlaub für den Monat hinausgeht, also zB vom 24.04. bis 03.05., dann das Ergebnis ein anderes, als ab Zeile 12 des nächsten Blattes zu beginnen.

    Gruß Peer
    Anzeige
    AW: Urlaubstage in Monatsblätter eintragen
    06.01.2024 20:56:47
    Fuzzy-Pow
    Hi Peer,

    UrlaubEintragen() hab ich Dir jetzt soweit angepasst.
    https://www.herber.de/bbs/user/165932.xlsm

    Wie lange Programmierst du eigentlich schon, ich sehe da einige Defizite !
    AW: Urlaubstage in Monatsblätter eintragen
    07.01.2024 11:10:35
    Peer
    Hallo Fuzzy.

    Vielen Dank für die Arbeit.

    Programmieren würde ich das nicht bezeichnen. Eher versuchtes Programmieren. Ich bin (immer noch) am Verstehen und Ausprobieren, was aber immer schwieriger wird, je mehr man möchte, je tiefer man geht. Erschwerend kommt hinzu, dass jede Programmierhilfe der vielen Helfern hier unterschiedliche Vorgehensweisen haben und etwas als "falsch" sehen, was der andere als "richtig" erachtet. Und dadurch habe ich immer das Gefühl, dass ich zu blöd für so etwas bin. Ich versuche mich, an den Lösungsvorschlägen heranzutasten, wie im Aktuellen (Urlaub), aber das Ergebnis ist weit weg davon, was ich damit bezwecke.
    Deshalb habe ich in meinem Code so viele Kommentare.

    Und so ist es auch mit der letzten Datei, die du mir verbessert geschickt hast. Beim Aufruf kommt, dass "UrlaubEintragen" nicht definiert ist. nun habe ich gelesen, das dies eventuell am "Zugriff" über "Private Sub" oder "Public Sub" liegen könnte. Aber "UrlaubEintragen" ist ja im selben Modul. Nachdem ich auf Public umgestellt habe, lief es zwar scheinbar, aber ich verstand nicht, warum?

    Außerdem wurden mehr Einträge eingefügt, als UTage in der Tabelle vorgegeben waren.
    Tabelle Urlaub
    Userbild
    Tabelle Juni
    Userbild
    Tabelle Juli
    Userbild
    Auch hier frage ich mich, warum?

    Als ich die Kalendertage in den Monatsblättern statt als Text mit Datum formatiert habe, wie in meinem vorhandenen Projekt schon vorgegeben ist und ich statt mit A1 nun mit B12 beginne, funktionierte es nun gar nicht mehr zufriedenstellend. Daher dachte ich daran, ganz von vorn zu beginnen, aber dazu muss ich es erst einmal verstehen.

    Ich lade die letzte Datei noch einmal hoch, wobei ich am Code nichts geändert habe, sondern nur in der Tabelle Urlaub zu deinen Erläuterungen noch etwas hinzugefügt habe.
    https://www.herber.de/bbs/user/165948.xlsm
    Ich freue mich, wenn du dich damit noch einmal auseinandersetzen möchtest, ansonsten danke ich dir, dass du mir bis dahin allein mit deinen Kommentaren im Code geholfen hast.

    Mit besten Gruß
    Peer
    Anzeige
    AW: Urlaubstage in Monatsblätter eintragen
    07.01.2024 15:07:15
    Fuzzy-Pow
    Und so ist es auch mit der letzten Datei, die du mir verbessert geschickt hast. Beim Aufruf kommt, dass "UrlaubEintragen" nicht definiert ist. nun habe ich gelesen, das dies eventuell am "Zugriff" über "Private Sub" oder "Public Sub" liegen könnte. Aber "UrlaubEintragen" ist ja im selben Modul. Nachdem ich auf Public umgestellt habe, lief es zwar scheinbar, aber ich verstand nicht, warum?

    In Tabelle13 (Urlaub) ist der Button, bei dem Event ruft Du UrlaubEintragen auf, das ist ja eine andere Quelle, der Code befindet sich ja in Tabelle13, und deine Prozedur (Sub) befindet sich in mod_Urlaub, deswegen muß hier Sub UrlaubEintragen() Public sein

    Option Explicit
    

    Private Sub btn_Eintragen_Click()
    UrlaubEintragen ' das muß in mod_Urlaub dann Public sein
    End Sub

    Private Sub btn_KrankEintragen_Click()
    KrankEintragen
    End Sub

    Private Sub btn_UF_Click()
    frm_Urlaub.Show
    End Sub
    Anzeige
    AW: Urlaubstage in Monatsblätter eintragen
    07.01.2024 16:50:40
    Peer
    Vielen Dank für den Hinweis, Fuzzy.
    Dann war es Missverständnis.
    AW: Urlaubstage in Monatsblätter eintragen
    07.01.2024 18:17:18
    Fuzzy-Pow
    läuft das jetzt ??
    AW: Urlaubstage in Monatsblätter eintragen
    07.01.2024 19:42:58
    Peer
    Ich habe auf Public umgestellt und alles läuft durch.
    Nur das Problem mit den "zu vielen Tagen" besteht weiterhin.
    Da muss ich mit meinen beschränkten Kenntnissen noch ein wenig länger suchen.

    ZB ist im Februar vom 15.02. bis 19.02. im Urlaubsblatt eingetragen, aber es wird ab 15.02. für den ganzen Monat Februar übermittelt. Gleiches gilt für April/Mai. Festgelegt wurde vom 24.04. bis 02.05. Und vom 08.05. Bis 10.05. Im Mai wird zwar bis 02.05. richtig eingetragen, aber ab 08.05. wieder bis zum Monatsende. Analog für Juni, Juli, August. Januar und Dezember läuft es korrekt.
    Da bin ich aktuell am rätseln, warum es mal passt und mal nicht.
    Mit dem Monatsübertritt scheint es gut auszusehen.
    Ich möchte mich trotz allem nochmals bei dir bedanken, dass du so viel Geduld mit mir hast und weiterhin hilfst.
    Gruß Peer
    Anzeige
    AW: Urlaubstage in Monatsblätter eintragen
    08.01.2024 18:25:19
    Fuzzy-Pow
    Hi Peer,

    Ich hab dir doch eine neue (geänderte) Excel-Datei geschickt (Anhang).

    https://www.herber.de/bbs/user/165957.xlsm

    Läuft die jetzt ?


    AW: Urlaubstage in Monatsblätter eintragen
    08.01.2024 20:14:29
    Peer
    Hallo Fuzzy.

    Jetzt funktioniert es.
    Vielen Dank.

    Das hätte ich so schnell nicht gefunden.

    Nun habe ich beide Versionen und werde versuchen, damit selbstständig das ähnliche Schema mit krank zu erreichen.

    Gruß
    Peer
    AW: Urlaubstage in Monatsblätter eintragen
    05.01.2024 15:59:03
    Peer
    Glaube ich dir, onur.

    Aber leider ist das Projekt schon seit vielen Jahren in Nutzung. Ich muss eine Lösung finden, bei der ich das vorhandene Projekt nur "update".
    Anzeige
    AW: Urlaubstage in Monatsblätter eintragen
    05.01.2024 18:12:09
    Peer
    So eine Art ewigen Jahreskalender, wie Outlook oder Google, schwebt mir schon lange vor.
    Leider bin ich mit meinen Kenntnissen noch weit davon entfernt, dies zu realisieren.
    Und als anpassbare Vorlage konnte ich für meine Bedürfnisse auch im Netz nichts finden.

    In meinem Kalender sind bestimmte Angaben am Tag einzutragen und auszuwerten. Hinzu kommen dann noch die Feiertage und Geburtstage, die farblich gekennzeichnet werden sollen.

    Ich würde erst einmal damit beginnen, die vorhandenen "Daten" auf meinen Monatsblättern in den Kalender übertragen bzw. anzeigen lassen.

    Ich dachte schon über Access nach, ob es nicht die bessere Wahl wäre. Aber da fange ich ja fast wieder von vorn an.
    Anzeige
    AW: Urlaubstage in Monatsblätter eintragen
    06.01.2024 16:32:28
    Fuzzy-Pow
    Hab da noch ein kleines Leckerli für Dich.
    https://www.herber.de/bbs/user/165921.xlsm
    einfach das Makro -> "Kalender1_anlegen" ausführen.

    Viel Spaß
    AW: Urlaubstage in Monatsblätter eintragen
    06.01.2024 17:24:25
    Peer
    Hallo Fuzzy.
    Danke für das Leckeri.

    Ich habe zwar schon eine Sub zum Erstellen der Monatsblätter mit Eintrag der Wochenende und Feiertage, trotzdem der Code sieht interessant aus.
    Das Ergebnis des Makros kann ich leider nicht sehen...

    ...der Debugger hängt bei
    Sheets.Add after:=Worksheets(Mon - 1)
    Peer
    AW: Leckerli
    06.01.2024 17:52:58
    Fuzzy-Pow
    Uff, mein Fehler.

    If Mon > 1 Then Sheets.Add after:=Worksheets(Mon - 1)
    AW: Leckerli
    06.01.2024 19:45:11
    Peer
    Uff, mein Fehler.

    Das ist ja nicht dramatisch gewesen. Zum Anschauen hätte die "Tabelle1" nicht gestört. ;-)
    AW: Urlaubstage in Monatsblätter eintragen
    06.01.2024 17:37:03
    Peer
    Ergänzung...
    Ich glaube, ich habe den Fehler gefunden...
    mit
    Sheets.Add after:=Worksheets(Mon)
    läuft der Code durch.

    Interessant, was passiert.
    Aber mein Kalender ist so aufgebaut...
    Sub Neues_Jahr(control As IRibbonControl)
    
    Dim lngYear As Long, lngMonth As Long, lngDay As Long
    Dim datDay As Date, varFerien As Variant, varFeiertage As Variant, strFeiertag As String
    Dim bolHolyday As Boolean
    Dim wks As Worksheet

    'On Error GoTo ERRORHANDLER

    With Application
    .ScreenUpdating = False
    .EnableEvents = False
    .AskToUpdateLinks = False
    .DisplayAlerts = False
    .Calculation = xlCalculationManual
    End With

    If MsgBox("Möchtest du wirklich das komplette Jahr löschen?" & vbCrLf _
    & "Damit gehen alle Einträge verloren.", vbYesNo + vbQuestion, "Aktuelles Jahr löschen") = vbYes Then

    frm_Jahr.Show

    Application.Calculate

    lngYear = Sheets("Gesamtstunden").Range("B25")

    For lngMonth = 1 To 12

    ThisWorkbook.Names.Item(MonthName(lngMonth)).RefersTo = Array(False, False, False, False)

    'Set wks = Sheets(Format(DateSerial(lngYear, lngMonth, 1), "mmmm"))
    With Worksheets(MonthName(lngMonth))
    .Unprotect
    ' ' Jahr in F4 eintragen
    ' .Range("F4") = lngYear
    ' ' Monat in E4 eintragen
    ' .Range("E4") = Month(.Range("B12"))
    'Zellen leeren und Formate entfernen
    With .Range("B12:C42")
    .ClearContents
    .Font.ColorIndex = xlAutomatic
    .Font.Bold = False
    .Interior.ColorIndex = xlNone
    .ClearComments
    End With

    .Range("D12:E42,G12:L42,P12:U42,X12:X42,Z12:AL42,BK12:BK42").ClearContents
    .Range("V10:W43").Interior.ColorIndex = 15

    'vom 1.Tag des Monats bis zum letzten
    For lngDay = 1 To Day(DateSerial(lngYear, lngMonth + 1, 0))
    'Datum ermitteln
    datDay = DateSerial(lngYear, lngMonth, lngDay)
    'In 'Feietage' das Datum suchen
    With Sheets("Feiertage").Range("Feiertage") '??? Leerzeichen am Ende vom Bereichsnamen ??
    varFeiertage = Application.Match(CLng(CDate(datDay)), .Columns(2), 0)
    If IsNumeric(varFeiertage) Then
    'Tag ist Feiertag
    strFeiertag = .Cells(varFeiertage, 1).Text
    Else
    'Tag ist kein Feiertag
    strFeiertag = ""
    End If
    End With
    'In 'Ferien' das Datum suchen - kleiner oder gleich
    varFerien = Application.Match(CLng(datDay), _
    Sheets("Ferien").Range("Bayern").Columns(1), 1)
    bolHolyday = False
    'Wenn Datum gefunden, dann vergeichen ob das Enddatum auch im Bereich liegt
    If IsNumeric(varFerien) Then
    bolHolyday = Sheets("Ferien").Range("Bayern").Cells(varFerien, 2) >= datDay
    End If
    'Die Datumszellen
    With .Range(.Cells(lngDay + 11, 2), .Cells(lngDay + 11, 3))
    .Value = datDay 'Datum eintragen
    'Wenn Wochentag größer Freitag, dann rote Schriftfarbe
    If Weekday(datDay, vbMonday) > 5 Or IsNumeric(varFeiertage) Then .Font.ColorIndex = 3
    'Wenn Wochentag ist Sonntag oder es ist ein Feiertag, dann Fettschrift
    .Font.Bold = Weekday(datDay, vbMonday) = 7 Or IsNumeric(varFeiertage)
    'Wenn Datum innerhalb eines Ferienbereiches liegt, dann Hintergrund Hellgrün
    If bolHolyday Then .Interior.Color = RGB(235, 241, 222)
    'Wenn Datum ein Feiertag, dann Kommentar in Spalte B
    If strFeiertag > "" Then
    With .Range("A1")
    '.Interior.Color = RGB(255, 255, 153) 'helles gelb
    .AddComment strFeiertag
    .Comment.Shape.TextFrame.AutoSize = True
    .Comment.Shape.Fill.Transparency = 0 'ohne Transparenz
    .Comment.Shape.Fill.ForeColor.RGB = RGB(204, 255, 204) 'Hintergrundfarbe green
    End With
    End If
    End With
    Next
    '.Range("V10:W43").Locked = True
    .Protect
    End With
    Next

    gobjRibbon.Invalidate

    ActiveWorkbook.Protect
    Sheets("Januar").Select
    Range("D12").Select

    ErrorHandler:

    'If Err.Number > 0 Then
    ' MsgBox "Fehler in con_Jahr_neu" & vbLf & vbLf & "Prozedur:" & vbTab & "Neues_Jahr" & vbLf & _
    ' "Nummer:" & vbTab & Err.Number & vbLf & "Meldung:" & vbTab & Err.Description & vbLf & _
    ' IIf(Erl, "Zeile:" & vbTab & Erl, ""), vbExclamation, "Fehler!"
    ' Err.Clear
    'End If

    With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .AskToUpdateLinks = True
    .DisplayAlerts = True
    .Calculation = xlCalculationAutomatic
    End With

    Else: Exit Sub
    End If

    End Sub
    Dabei sind die Monatsblätter schon vorhanden und es werden nur die "Daten" aktualisiert.
    Der Code ist im Großen und ganze nicht auf meinem Mist gewachsen. Ein wenig aus dem Archiv und Anpassungen von einigen Helfern hier und ein wenig von mir.

    Aber schlussendlich habe ich immer noch keine Lösung für das "Urlaubs-Problem".

    Peer

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige