05.12.2018, 12:35
Hi Leute,
ich habe eine Userform, in der man Urlaubsbeginn und -ende eintragen soll. Meine Vision war, dass man nur Tag und Monat einträgt und er dann das Jahr (ThisWorkbook.Sheets("Urlaubskalender").Cells(1, 1)) automatisch ergänzt.
Das funktioniert im Feld "Urlaubsbeginn" auch sehr gut:
Ich habe beim Urlaubsende allerdings noch einige Fehlerroutinen eingebaut, sodass die automatische Ergänzung immer streikt :(
So sieht der Code aus:
Vielleicht kann ja einer drüber schauen, wo es hakt ... ich bin mit meinem Latein am Ende :D
Danke und Gruß
ich habe eine Userform, in der man Urlaubsbeginn und -ende eintragen soll. Meine Vision war, dass man nur Tag und Monat einträgt und er dann das Jahr (ThisWorkbook.Sheets("Urlaubskalender").Cells(1, 1)) automatisch ergänzt.
Das funktioniert im Feld "Urlaubsbeginn" auch sehr gut:
Code:
Private Sub TextBox_Urlaubsbeginn_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Integer
'Überprüfe, ob in der Textbox ein Datum eingetragen ist
If IsDate(TextBox_Urlaubsbeginn.Text) Then
TextBox_Urlaubsbeginn.Text = Format(CDate(TextBox_Urlaubsbeginn.Text), "DD.MM." & ThisWorkbook.Sheets("Urlaubskalender").Cells(1, 1))
'Prüfen, ob Überschneidungen vorhanden sind
For i = 16 To 35
If Cells(i, 13) <= CDate(TextBox_Urlaubsbeginn.Value) And Cells(i, 15) >= CDate(TextBox_Urlaubsbeginn.Value) Then
MsgBox "Der Eintrag überschneidet sich mit dem Urlaubszeitraum " & i - 15, vbInformation, "Information"
Cancel = True
End If
Next i
ElseIf TextBox_Urlaubsbeginn.Text <> "" Then
MsgBox "Bitte gültiges Datum eingeben.", vbInformation, "Information"
TextBox_Urlaubsbeginn.Text = ""
End If
End Sub
Ich habe beim Urlaubsende allerdings noch einige Fehlerroutinen eingebaut, sodass die automatische Ergänzung immer streikt :(
So sieht der Code aus:
Code:
Private Sub TextBox_Urlaubsende_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Integer
'Überprüfe, ob in der Textbox ein Datum eingetragen ist, welches größer als der Urlaubsbeginn ist
If IsDate(TextBox_Urlaubsende.Text) Then
If CDate(TextBox_Urlaubsbeginn.Text) > CDate(TextBox_Urlaubsende.Text) Then
MsgBox "Enddatum muss größer als Beginndatum sein.", vbInformation, "Information"
Cancel = True
ElseIf CDate(TextBox_Urlaubsende.Text) > "31.01." & (ThisWorkbook.Sheets("Urlaubskalender").Cells(1, 1) + 1) Then
MsgBox "Bitte ein Datum eingeben, welches kleiner ist als 31.01." & (ThisWorkbook.Sheets("Urlaubskalender").Cells(1, 1) + 1), vbInformation, "Information"
Cancel = True
Else
TextBox_Urlaubsende.Text = Format(CDate(TextBox_Urlaubsende.Text), "DD.MM." & ThisWorkbook.Sheets("Urlaubskalender").Cells(1, 1))
'Prüfen, ob Überschneidungen vorhanden sind
For i = 16 To 35
If Cells(i, 13) <= CDate(TextBox_Urlaubsende.Value) And Cells(i, 15) >= CDate(TextBox_Urlaubsende.Value) Then
MsgBox "Der Eintrag überschneidet sich mit dem Urlaubszeitraum " & i - 15, vbInformation, "Information"
Cancel = True
End If
Next i
End If
ElseIf TextBox_Urlaubsende.Text <> "" Then
MsgBox "Bitte gültiges Datum eingeben.", vbInformation, "Information"
TextBox_Urlaubsende.Text = ""
End If
End Sub
Vielleicht kann ja einer drüber schauen, wo es hakt ... ich bin mit meinem Latein am Ende :D
Danke und Gruß