Urlaubskalender
#11
Hallo,

für interessierte: Der Quelltext mit Kommentaren:

Code:
Option Explicit                                                                                                 ' Variablendeklaration erzwingen (erforderlich)

Private Sub Worksheet_Activate()
' Variablen deklarieren
    Dim lngZeile As Long                                                                                        ' Schleifenzähler für Datenherkunft
    Dim lngStDat As Long                                                                                        ' Startdatum vom Abwesenheitszeitraum
    Dim lngZiDat As Long                                                                                        ' Enddatum vom Abwesenheitszreitraum
    Dim lngFarb As Long                                                                                         ' Farbe für Abwesenheitsschlüssel
    Dim strMitarb As String                                                                                     ' Name des Mitarbeiters
    Dim lngZiZei As Long                                                                                        ' Zeile in der markiert wird
    Tabelle2.Range("B3:XFD" & Range("A1").End(xlDown).Row).Interior.Color = xlNone                              ' alte Markierungen löschen
    For lngZeile = 5 To Tabelle1.Range("A1").End(xlDown).Row                                                    ' laufe von Zeile 5 nach Ende der Liste in der Herkunftstabelle
        lngZiZei = Application.Match(CStr(Tabelle1.Cells(lngZeile, 2)), Tabelle2.Columns(1), 0)                 ' Zeile für Markierunge ermitteln
        lngStDat = Application.Match(CLng(Tabelle1.Cells(lngZeile, 3)), Tabelle2.Rows(1), 0)                    ' Startdatum vom Abwesenheitszeitraum
        lngZiDat = Application.Match(CLng(Tabelle1.Cells(lngZeile, 4)), Tabelle2.Rows(1), 1)                    ' Enddatum vom Abwesenheitszeitraum
        lngFarb = Tabelle1.Cells(lngZeile, 7).DisplayFormat.Interior.Color                                      ' Farbe vom Abwesenheitsgrund auslesen
        Range(Tabelle2.Cells(lngZiZei, lngStDat), Tabelle2.Cells(lngZiZei, lngZiDat)).Interior.Color = lngFarb  ' Abwesenheitszeitraum mit ermittelter Farbe füllen
    Next lngZeile                                                                                               ' nächste Zeile
End Sub
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#12
Danke Klaus Dieter  Heart

Ja so in etwa sollte es sein. Allerdings kann ich in deiner Datei keine Formel sehen?

Ich habe das Layout des Kalenders nochmal auf vertikal geändert, um das Hinzufügen neuer Spalten für neue Mitarbeiter etwas zu erleichtern
Der Kalender ist jetzt auch dynamisch heißt die Daten und Wochentage ändern sich automatisch bei Änderung der Jahrezahl in Zelle F2

Nun stehe ich weiterhin vor der Frage für eine gute Formel, damit sich der Kalender automatisch ausfüllt. Ich denke es reicht, wenn sich einfach
die Farben entsprechend ändern, also:

  1. Wochenende/Feiertage = Grau
  2. Urlaub = Gelb
  3. Überstunden = Lila
  4. Dienstreise = Blau
  5. Arzttermin = Orange
  6. Krank = Rot


Punkte 2-6 hängen natürlich von drei Faktoren ab:

  • Befindet sich das Datum in einem der Zeiträume in Spalten C und D?
  • Wenn ja, für welchen Mitarbeiter gilt das in Spalte B?
  • Wenn ja welcher Urlaubstyp ist in Spalte G eingetragen?

Ein Sonderfall ist Punkt 1 (Wochenende / Feiertage). Hier würde es sich die Informationen aus dem Tab "Urlaub Data" holen.
Dort sind die Mitarbeiter aufgeführt in Spalte D aufegführt und die das Bundesland in Spalte E zugeordnet. In Spalten J bis Y
dann die jewieligen Feiertage pro Bundesland.

Wäre das möglich alles möglich? Oder denke ich da viel zu komplizert und es gäbe da eine viel einfachere Methode?

Danke
Ben


Angehängte Dateien
.xlsx   Dynamischer Kalender.xlsx (Größe: 49,3 KB / Downloads: 10)
Antworten Top
#13
Hallo Ben,

mein Vorschlag ging dahin, auf den mittleren Teil (Spalten I bis AM) zu verzichten. Die horizontale Ausrichtung des Kalendariums hat den Vorteil, dass es keine Probleme gibt, wenn Abwesenheitszeiträume über den Monats- bzw. Jahreswechsel gehen. Der Kalender kann nahezu endlos verlängert werden. Die Spalten reichen für rund vierzig Jahre. Neue Mitarbeiter können unten an der Liste angefügt werden. Die Farben der Abwesenheiten werden auf dem Blatt "Urlaub" ausgelesen und Verwendet, das funktioniert auch bei Farben, die per bedingter Formatierung ausgewählt werden. Also alles Zukunftssicher.


Zitat: Allerdings kann ich in deiner Datei keine Formel sehen?


Eine Formel gibt es da nicht, es arbeitet im Hintergrund eine Ereignisprozedur, die jedes Mal startet, wenn das Tabellenblatt geöffnet wird. Den Quelltext kannst du sehen, wenn du mit der rechten Maustaste auf den Reiter von "Tabelle1" klickst und im Kontextmenü den Punkt Code anzeigen auswählst.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#14
....
https://www.ms-office-forum.net/forum/sh...p?t=381757
Antworten Top
#15
Hallo,

anbei mal ein Urlaubskalender, bei dem der Fragesteller noch mehr Ausnahmen haben wollte...

Die Formeln sind nur bis Februar ausgefüllt... und auch nur eine Auswahl für die bedingte Formatierung... 

Vielleicht hilft das ja schon weiter?


Angehängte Dateien
.xlsx   Urlaubsplaner 2021 (3).xlsx (Größe: 47,48 KB / Downloads: 14)
Antworten Top


Gehe zu:


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