Austrittsdatum automatisch berechnen

  • Excel

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Rigattoni.

    Austrittsdatum automatisch berechnen

    Hallo zusammen,

    ich bin immer noch dran, meine UserForms zu optimieren.
    Mit eurer Hilfe habe ich ja auch schon ein paar "Sonderlocken" implementieren können. Dafür erst mal herzlichen Dank an die Community.

    Wo ich gerade dran koche ist die Kündigung eines Mitgliedes.

    In meiner Userform habe ich eine TextBoxKuendEing, in der ich das Datum des Kündigungs-Eingangs eingebe.
    Nun hat jeder Verein ja auch eine Kündigungsfrist (bei uns bis zum 30.11. des Jahres). Dann wird die Kündigung zum Jahresende wirksam.
    Leider kam es in den vergangenen Jahren immer wieder mal vor, dass eine Kündigung zu spät eintrudelt, die Kündigung also erst zum Ende des Folgejahres wirksam wird.

    Bislang habe ich nur den Code für das Eingangsdatum:

    Visual Basic-Quellcode

    1. '####################################
    2. '### Kündigung
    3. '####################################
    4. Private Sub TextBoxKuendEing_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    5. If IsDate(TextBoxKuendEing.Text) Then
    6. TextBoxKuendEing.Text = Format(TextBoxKuendEing.Text, "DD.MM.YYYY")
    7. Else
    8. MsgBox "Kein gültiges Datum!", vbCritical
    9. End If
    10. End Sub

    Mir fehlt jetzt noch die Berechnung des Ende-Datums...

    Wenn TextBoxKuendEing.Text > 30.11. des aktuellen Jahres, dann TextBoxKuendExit.Text = 31.12.Folgejahr

    Nur wie bekomme ich das in VBA gedengelt? Könnt ihr mir da bitte noch mal helfen???

    Viele Grüße
    Rigattoni

    Visual Basic-Quellcode

    1. Dim Datum As Date, NextDate As Date
    2. If IsDate(TextBoxKuendEing.Text) Then
    3. NextDate = DateSerial(Year(Date),12,31)
    4. If Month(Date) > 11 Then NextDate = DateAdd("y",1,NextDate)
    5. Datum = CDate(TextBoxKuendEing.Text)
    6. If Datum < NextDate Then
    7. MsgBox "nächster Termin " & NextDate
    8. Else
    9. TextBoxKuendEing.Text = Format(Datum, "DD.MM.YYYY")
    10. Endif
    11. Else
    12. MsgBox "Kein gültiges Datum!", vbCritical
    13. End If
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „petaod“ ()

    Du kannst den Monat prüfen und wenn er gleich 12 ist. dann zum Jahr eins dazu zählen.

    Visual Basic-Quellcode

    1. Function KuendDatum(KuendEing As Date) As Date
    2. If Month(KuendEing) = 12 Then
    3. KuendDatum = DateSerial(Year(KuendEing) + 1, 12, 31)
    4. Else
    5. KuendDatum = DateSerial(Year(KuendEing), 12, 31)
    6. End If
    7. End Function
    Ahhh....
    Mit DateAdd hatte ich mich schon abgemüht, aber nicht hin bekommen.
    Da wurde immer das aktuelle Jahr ausgegeben...

    Mit der Lösung von @HenryV klappt das jetzt prima.

    So sieht das jetzt aus:
    Spoiler anzeigen

    Visual Basic-Quellcode

    1. Private Sub TextBoxKuendEing_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    2. If IsDate(TextBoxKuendEing.Text) Then
    3. If Month(TextBoxKuendEing.Value) = 12 Then
    4. TextBoxKuendExit.Value = DateSerial(Year(TextBoxKuendEing) + 1, 12, 31)
    5. Else
    6. TextBoxKuendExit.Value = DateSerial(Year(TextBoxKuendEing), 12, 31)
    7. End If
    8. Else
    9. MsgBox "Kein gültiges Datum!", vbCritical
    10. End If
    11. End Sub[/spoiler][spoiler]


    Vielen Dank!!!