Hallo,
ich bräuchte mal dringende Hilfe bei der Änderung eines VBA-Codes für einen Urlaubsplaner. Nachfolgend der erste Auszug vom Code. Dieser ist aber nur für die ersten 2 Monate. Ich benötige Ihn aber für 12 Monate also Januar - Dezember. Vielen Dank für eure Hilfe
Private Sub CommandButton1_Click()
Dim dat As Date, dat2 As Date, dat3 As Date ' Variablen deklarieren
dat = Me.TextBox1 ' Wert aus UserForm zuweisen
dat2 = Me.TextBox2 ' Wert aus UserForm zuweisen
Worksheets("Januar").Activate ' Tabellenblatt 1 aktivieren
If dat2 > Cells(3, 32) And dat Cells(3, 32) Then Worksheets("Februar").Activate ' wenn Urlaubsbeginn im Februar Tabellenblatt aktivieren
sp = 1 ' Startwert für Do-While-Schleife
Do While Cells(3, sp) <> dat ' Start Schleife (Urlausbeginn suchen)
sp = sp + 1 ' Zähler um Wert 1 erhöhen
Loop ' Wendepunkt für Schleife
sp2 = 1 ' Startwert für Do-While-Loop-Schleife
Do While Cells(3, sp2) <> dat2 ' Start Schleife (Urlausende suchen)
sp2 = sp2 + 1 ' Zähler um Wert 1 erhöhen
Loop ' Wendepunkt für Schleife
z = 4 ' Startwert für Do-While-Schleife
Do While Cells(z, 1) <> Me.ComboBox1 ' Start Schleife (Mitarbeiter suchen)
z = z + 1 ' Zähler um Wert 1 erhöhen
Loop ' Wendepunkt für Schleife
If dat3 > 0 Then GoTo Seitenwechsel ' wenn Urlaubsende im 2. Halbjahr gehe zur Unterroutine
For r = sp To sp2 ' sonst Schleifenstart für Tabelleneintrag
Cells(3, r).Select ' Zellen selektieren
If Format(Cells(3, r), "ddd") = "Sa" _
Or Cells(2000, r) = 2 _
Or Format(Cells(3, r), "ddd") = "So" Then GoTo sprung ' wenn Sonnabend oder Sonntag kein Eintrag
Cells(z, r) = Me.ComboBox2 ' Eintrag für Urlaub
ut = ut + 1
TextBox3 = "Es werden " & ut & " Abwesenheits-Tage" & Chr(13) & "benötigt"
sprung: ' Sprungziel (wenn kein Eintrag)
Next r ' Schleifenzähler
Unload Me
UserForm1.Show 'Name anpassen
Exit Sub ' Programmende, wenn Urlaub nur Januar
Seitenwechsel: ' Sprungziel wenn Urlaubsanteile im Februar
For r = sp To sp2 ' Schleifenstart für Tabelleneintrag
Cells(3, r).Select ' Zellen selektieren
If Format(Cells(3, r), "ddd") = "Sa" _
Or Format(Cells(3, r), "ddd") = "So" Then GoTo sprung1 ' wenn Sonnabend oder Sonntag kein Eintrag
Cells(z, r) = "U" ' Eintrag für Urlaub
ut2 = ut2 + 1
sprung1: ' Sprungziel (wenn kein Eintrag)
Next r ' Schleifenzähler
Worksheets("Februar").Activate ' Tabellenblatt 2 aktivieren
sp3 = 2 ' Startwert für Do-While-Loop-Schleife
Do While Cells(3, sp3) <> dat3 ' Start Schleife (Urlausende suchen)
sp3 = sp3 + 1 ' Schleifenzähler
Loop ' Wendepunkt für Schleife
For s = 2 To sp3 ' Schleifenstart für Tabelleneintrag
Cells(3, s).Select ' Zellen selektieren
If Format(Cells(3, s), "ddd") = "Sa" _
Or Format(Cells(3, s), "ddd") = "So" Then GoTo sprung2 ' wenn Sonnabend oder Sonntag kein Eintrag
Cells(z, s) = "U" ' Eintrag für Urlaub
ut2 = ut2 + 1
TextBox3 = "Es werden " & ut2 & " Abwesenheits-Tage" & Chr(13) & "benötigt"
sprung2: ' Sprungziel wenn kein Eintrag
Next s ' Schleifenzähler
Unload Me
UserForm1.Show 'Name anpassen
End Sub ' Programmende
Private Sub CommandButton2_Click()
UserForm1.Hide ' UserForm schließen
End Sub
|