Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Urlaubsplanung VBA

Forumthread: Urlaubsplanung VBA

Urlaubsplanung VBA
21.06.2022 11:47:40
Mo
Hallo zusammen,
ich möchte gerne über VBA eine Urlaubsplanung via Userform generieren.
komme aber leider nicht weiter, da meine Kenntnisse in VBA nicht ausreichen.
Userform soll beinhalten:
Mitarbeiter = Combobox 1 --> befinden sich im Arbeitsblatt("Urlaubsplanung") D15 abwärts bis D72
Urlaubsntrag = Combobox 2 --> befinden sich im Arbeitsblatt("Urlaubsplanung") A2 abwärts bis A8
für den jeweiligen Antrag soll das Kürzel in den Datumsspalten L13 bis NL13 eingetragen werden
Kürzel befindet sich im Arbeitsblatt("Urlaubsplanung") BC2 verbundene Zellen abwärts bis BC8
sprich für:
Urlaub = U
Urlaubswunsch = W
Urlaub von = Textbox1 --> Datum befinden sich im Arbeitsblatt("Urlaubsplanung") von L13 bis NL13
Urlaub bis = Textbox2 --> Datum befinden sich im Arbeitsblatt("Urlaubsplanung") von L13 bis NL13
Darüber hinaus möchte ich in einer zweiten Userform den jeweiligen Urlaubsantrag auslesen, wann der Mitarbeiter in dem Jahr Urlaub etc. hat auch einzelne Tage sollen berücksichtigt werden.
Es sollen zu dem jeweiligen Antrag alle Daten im Jahr angezeigt werden.
Userform soll beinhalten:
Mitarbeiter = Combobox 1
Urlaubsntrag = Combobox 2
bsp. Listbox --> wo der jeweilige Antrag in Daten angezeigt wird für das komplette Jahr.
Ich würde mich recht herzlich freuen, wenn mir jemand dabei helfen könnte.
Im Anhang die Datei:
https://www.herber.de/bbs/user/153693.xlsx
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das was Du möchtest...
21.06.2022 11:50:41
{Boris}
Hi,
...ist eine Auftragsprogrammierung - es gibt Leute, die leben (unter anderem) davon - z.B. der Betreiber dieser Seite: https://www.herber.de/develop.html
VG, Boris
AW: Das was Du möchtest...
21.06.2022 12:02:59
Mo
Danke für die Info,
Ich habe allerdings was ähnliches hier im Forum gefunden konnte es aber nicht anwenden.
mir wäre alleine schon geholfen, wenn nur die Eintragungen getätigt werden.
Und die VBA habe ich auch schon teils vorgeschrieben bräuchte nur eine Hilfestellung.
Grüße zurück
Anzeige
Hilfestellung...
21.06.2022 12:06:16
{Boris}
Hi,

Und die VBA habe ich auch schon teils vorgeschrieben bräuchte nur eine Hilfestellung.
...ist natürlich kein Problem - nur hast Du bisher nicht gezeigt, was Du "teils vorgeschrieben" hast. Das kannst Du jetzt aber gerne nachholen ;-)
VG, Boris
Anzeige
AW: Hilfestellung...
21.06.2022 12:13:21
Mo
Hi Boris,
danke, das habe ich natürlich versäumt, deshalb habe ich die Datei angehängt.
folgenden Code habe ich bereits geschrieben
'Urlaub in Kalender eintragen

Private Sub CommandButton2_Click()
Dim str_mitarbeiter As String
Dim dat_von As Date
Dim dat_bis As Date
Dim str_kuerzel As String
Dim obj_wks_ziel As Worksheet
Dim lng_spalte_von As Long
Dim lng_spalte_bis As Long
Dim rng_fund As Range
Dim lng_zeile As Long
Dim lng_zaehler As Long
str_mitarbeiter = Me.ComboBox1
dat_von = Me.TextBox1
dat_bis = Me.TextBox2
str_kuerzel = Me.ListBox1
Set obj_wks_ziel = ThisWorkbook.Worksheets("Urlaubsplanung")
With obj_wks_ziel
For lng_zaehler = 4 To .Rows.Count
If .Cells(14, lng_zaehler) = str_mitarbeiter Then
lng_zeile = lng_zaehler
End If
Next
Set rng_fund = .Rows(12).Find(dat_von, LookIn:=xlFormulas, lookat:=xlWhole)
If Not rng_fund Is Nothing Then
lng_spalte_von = rng_fund.Column
End If
Set rng_fund = .Rows(12).Find(dat_bis, LookIn:=xlFormulas, lookat:=xlWhole)
If Not rng_fund Is Nothing Then
lng_spalte_bis = rng_fund.Column
End If
For lng_zaehler = lng_spalte_von To lng_spalte_bis
If Weekday(.Cells(lng_zaehler, 12))  1 And Weekday(.Cells(lng_zaehler, 12))  7 Then
.Cells(lng_zaehler, lng_zeile) = str_kuerzel
End If
Next
End With
Unload Me
End Sub

Anzeige
Da fehlt aber noch was...
21.06.2022 12:15:01
{Boris}
Hi,
Deine erste Datei ist eine xlsx und enthält somit weder Userforms noch Code.
Offensichtlich hast Du da doch schon was gebaut - also lade doch bitte die xlsm mit dem bisherigen Inhalt hoch ;-)
VG, Boris
@Boris
22.06.2022 05:59:24
ralf_b
ich befürchte du hast da was überlesen Userform soll beinhalten:
und Ich hab da was Ähnliches gefunden
Deine erste Vermutung was den Hilfeaufwand betrifft würde ich bei "VBA nein", und "..konnte es nicht anpassen.." unterschreiben.
Anzeige
@Ralf
22.06.2022 09:25:49
{Boris}
Hi Ralf,
im weiteren Threadverlauf kam diese Aussage:

folgenden Code habe ich bereits geschrieben
Insofern müsste da schon was vorhanden sein ;-)
VG, Boris
AW: @Ralf
22.06.2022 10:53:45
Mo
Hallo zusammen,
tut mir Leid ich habe aus versehen die falsche Datei hoch geladen.
hier die .xlsm Datei mit dem bisher geschriebenen Code.
https://www.herber.de/bbs/user/153710.xlsm
Gruß Mo
Anzeige
;
Anzeige

Infobox / Tutorial

Urlaubsplanung mit VBA in Excel


Schritt-für-Schritt-Anleitung

Um einen Urlaubsplaner in Excel zu erstellen, der mit VBA funktioniert, folge diesen Schritten:

  1. Vorbereitung der Arbeitsmappe:

    • Erstelle ein neues Arbeitsblatt namens "Urlaubsplanung".
    • Füge die benötigten Daten in die entsprechenden Zellen ein:
      • Mitarbeiter in D15 bis D72.
      • Urlaubsanträge in A2 bis A8.
      • Kürzel in den verbundenen Zellen von BC2 bis BC8.
  2. Erstellen der Userform:

    • Öffne den VBA-Editor (ALT + F11) und füge eine neue Userform hinzu.
    • Füge zwei Comboboxen für die Auswahl des Mitarbeiters und des Urlaubsantrags hinzu.
    • Füge zwei Textboxen für die Datumsangaben "Urlaub von" und "Urlaub bis" hinzu.
  3. Code für das Eintragen des Urlaubs:

    • Verwende den folgenden VBA-Code in der Userform:

      Private Sub CommandButton2_Click()
      Dim str_mitarbeiter As String
      Dim dat_von As Date
      Dim dat_bis As Date
      Dim str_kuerzel As String
      Dim obj_wks_ziel As Worksheet
      Dim lng_spalte_von As Long
      Dim lng_spalte_bis As Long
      Dim rng_fund As Range
      Dim lng_zeile As Long
      Dim lng_zaehler As Long
      
      str_mitarbeiter = Me.ComboBox1
      dat_von = Me.TextBox1
      dat_bis = Me.TextBox2
      str_kuerzel = Me.ListBox1
      Set obj_wks_ziel = ThisWorkbook.Worksheets("Urlaubsplanung")
      
      With obj_wks_ziel
         For lng_zaehler = 4 To .Rows.Count
             If .Cells(14, lng_zaehler) = str_mitarbeiter Then
                 lng_zeile = lng_zaehler
             End If
         Next
         Set rng_fund = .Rows(12).Find(dat_von, LookIn:=xlFormulas, lookat:=xlWhole)
         If Not rng_fund Is Nothing Then
             lng_spalte_von = rng_fund.Column
         End If
         Set rng_fund = .Rows(12).Find(dat_bis, LookIn:=xlFormulas, lookat:=xlWhole)
         If Not rng_fund Is Nothing Then
             lng_spalte_bis = rng_fund.Column
         End If
         For lng_zaehler = lng_spalte_von To lng_spalte_bis
             If Weekday(.Cells(lng_zaehler, 12)) <> 1 And Weekday(.Cells(lng_zaehler, 12)) <> 7 Then
                 .Cells(lng_zaehler, lng_zeile) = str_kuerzel
             End If
         Next
      End With
      Unload Me
      End Sub
  4. Testen der Userform:

    • Starte die Userform und teste die Eingaben, um sicherzustellen, dass die Urlaubsanträge korrekt eingetragen werden.

Häufige Fehler und Lösungen

  • Problem: Eintragungen erfolgen nicht.

    • Lösung: Überprüfe, ob die Mitarbeiter- und Urlaubsantragsdaten korrekt in den Comboboxen ausgewählt werden.
  • Problem: Falsches Datum wird eingetragen.

    • Lösung: Stelle sicher, dass die Datumsformatierung in den Textboxen korrekt ist, und dass die Datumsangaben im Arbeitsblatt vorhanden sind.

Alternative Methoden

Falls du keinen VBA-Code verwenden möchtest, kannst du auch die folgenden Methoden zur Urlaubsplanung in Excel nutzen:

  • Excel-Formeln: Mit Hilfe von Formeln kannst du Urlaubszeiträume berechnen, jedoch ist die Automatisierung nicht so leistungsfähig wie mit VBA.
  • Excel-Add-Ins: Es gibt zahlreiche Add-Ins, die speziell für die Urlaubsplanung entwickelt wurden.

Praktische Beispiele

Ein Beispiel für eine Urlaubsplanung in Excel könnte so aussehen:

  • Erstelle eine Tabelle, in der jeder Mitarbeiter eine Zeile hat, und die Spalten die Monate des Jahres darstellen.
  • Verwende bedingte Formatierung, um Tage, an denen Urlaub genommen wird, farblich hervorzuheben.

Hier ist ein einfaches Beispiel für eine Urlaubsplanungstabelle:

Mitarbeiter Januar Februar März ... Dezember
Max Mustermann U U ... U
Lisa Müller U ...

Tipps für Profis

  • Automatisierung: Nutze die Möglichkeit, um Urlaubsanträge automatisch einzutragen, indem du das VBA-Skript anpasst und erweiterst.
  • Benutzerfreundlichkeit: Gestalte die Userform so, dass sie intuitiv und benutzerfreundlich ist.
  • Datensicherheit: Achte darauf, dass sensible Mitarbeiterdaten geschützt sind, indem du das Arbeitsblatt mit einem Passwort schützt.

FAQ: Häufige Fragen

1. Wie kann ich die Userform anpassen? Du kannst die Userform im VBA-Editor anpassen, indem du Steuerelemente hinzufügst oder änderst.

2. Welche Excel-Version benötige ich für VBA? VBA ist ab Excel 2010 verfügbar. Stelle sicher, dass du eine kompatible Version verwendest.

3. Kann ich die Urlaubsplanung auch ohne VBA umsetzen? Ja, du kannst die Urlaubsplanung auch mit Excel-Formeln und -Funktionen umsetzen, jedoch ist die Automatisierung eingeschränkt.

4. Wo finde ich Vorlagen für einen Urlaubsplaner in Excel? Es gibt viele Vorlagen für Urlaubsplaner in Excel, die du online finden kannst, die dir als Ausgangspunkt dienen können.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige