ich weis, es ist eine Zumutung sich folgenden Code anzuschauen, aber ich bin durchaus lernwillig und lernfähig. Deshalb traue ich mich mein Produkt hier vorzustellen und zu fragen, wie man so etwas optimieren kann. Gibt es vielleicht sogar ein Programm, das diesen Code analysiert und in optimaler Form wieder zur Verfügung stellt oder muss das ein findiger Kopf herausfinden. Ich bin leider kein Programmierer sondern nur etwas handwerklich begabt und stricke mir aus meinem (dürftigen) Wissen und mit Hilfe dieses tollen Forums meine Programme zusammen.
Hintergrund meines Programmes ist, das zum Beginn eines bestimmten Verzinsungsdatums zunächst die Höhe des Kapitals zu diesem Zeitpunkt festgestellt werden muss. Über Textboxen frage ich ab Beginn des Anspruchs die Höhe der Geldleistung ab und addiere die einzelnen Beträge zum o.g. Kapital. Kompliziert wird es dadurch, dass sich der Betrag mitten im Monat ändern kann und ich dann diesen Monat mit den tatsächlichen Tagen und den verschiedenen Beträgen berechnen muss. Dazu kommen noch die vollen Monate vor diesem und nach diesem Monat bis zum Datum des Verzinsungsbeginnes. Verwirrt? Ich manchmal auch! Für zwei Textboxen ist der folgende Code. Dabei ist noch nicht einmal berücksichtigt, dass das Datum in der ersten Textbox auch nach dem 1.des Monates sein kann. Das wollte ich im nächsten Block berechnen. Und das ganze dann für insgesamt 18 (achtzehn) Textboxen! Eine Funktion "Monatstage" existiert zu diesem Programm.
'Beginn am 1.d.Monats, 2.Textbox mit Datum
If Day(txtFaelligkeit1.Text) = 1 And Day(txtFaelligkeit2.Text) = 1 Then
If CDate(txtFaelligkeit2.Text) < CDate(txtBeginnVerzinsung.Text) Then
'Leistung bis Monatsende
KapitalF1 = DateDiff("m", (CDate(txtFaelligkeit1.Text)), (CDate(txtFaelligkeit2.Text))) * txtEuroFaelligkeit1.Text
If CDbl(txtEuroFaelligkeit2.Text) > 0 Then
KapitalF2 = DateDiff("m", (CDate(txtFaelligkeit2.Text)), (CDate(txtBeginnVerzinsung.Text))) * txtEuroFaelligkeit2.Text
KapitalF = KapitalF1 + KapitalF2
End If
If CDbl(txtEuroFaelligkeit2.Text) = 0 Then
KapitalF = KapitalF1
End If
End If
End If
'Ende der Leistung vor Monatsende im gleichen Monat
If Year(CDate(txtFaelligkeit1)) & Month(CDate(txtFaelligkeit1.Text)) = Year(CDate(txtFaelligkeit2)) & Month(CDate(txtFaelligkeit2.Text)) Then
If Day(txtFaelligkeit1.Text) = 1 And Day(txtFaelligkeit2.Text) > 1 Then
Tage1 = Day(txtFaelligkeit2.Text) - 1
KapitalF1 = (Round(txtEuroFaelligkeit1.Text / Monatstage(txtFaelligkeit2.Text) * Tage1, 2))
If CDbl(txtEuroFaelligkeit2.Text) > 0 Then
Tage2 = Monatstage(txtFaelligkeit2.Text) - Day(txtFaelligkeit2.Text) + 1
KapitalF2 = (Round(txtEuroFaelligkeit2.Text / Monatstage(txtFaelligkeit2.Text) * Tage2, 2))
plusEinMonat = DateSerial(Year(txtFaelligkeit1.Text), Month(txtFaelligkeit1.Text) + 1, (Day(txtFaelligkeit1.Text)))
KapitalF3 = DateDiff("m", (CDate(plusEinMonat)), (CDate(txtBeginnVerzinsung.Text))) * txtEuroFaelligkeit2.Text
KapitalF = KapitalF1 + KapitalF2 + KapitalF3
End If
If CDbl(txtEuroFaelligkeit2.Text) = 0 Then
If Year(CDate(txtFaelligkeit1)) & Month(CDate(txtFaelligkeit1.Text)) = Year(CDate(txtFaelligkeit2)) & Month(CDate(txtFaelligkeit2.Text)) Then
KapitalF = KapitalF1
End If
End If
End If
End If
'Ende der Leistung vor Monatsende in einem anderen Monat
If Year(CDate(txtFaelligkeit1)) & Month(CDate(txtFaelligkeit1.Text)) <> Year(CDate(txtFaelligkeit2)) & Month(CDate(txtFaelligkeit2.Text)) Then
If Day(txtFaelligkeit1.Text) = 1 And Day(txtFaelligkeit2.Text) > 1 Then
If CDbl(txtEuroFaelligkeit2.Text) > 0 Then
KapitalF1 = DateDiff("m", (CDate(txtFaelligkeit1.Text)), (CDate(txtFaelligkeit2.Text))) * txtEuroFaelligkeit1.Text
Tage1 = Day(txtFaelligkeit2.Text) - 1
KapitalF2 = (Round(txtEuroFaelligkeit1.Text / Monatstage(txtFaelligkeit2.Text) * Tage1, 2))
Tage2 = Monatstage(txtFaelligkeit2.Text) - Day(txtFaelligkeit2.Text) + 1
KapitalF3 = (Round(txtEuroFaelligkeit2.Text / Monatstage(txtFaelligkeit2.Text) * Tage2, 2))
plusEinMonat = DateSerial(Year(txtFaelligkeit2.Text), Month(txtFaelligkeit2.Text) + 1, (Day(txtFaelligkeit2.Text)))
KapitalF4 = DateDiff("m", (CDate(plusEinMonat)), (CDate(txtBeginnVerzinsung.Text))) * txtEuroFaelligkeit2.Text
KapitalF = KapitalF1 + KapitalF2 + KapitalF3 + KapitalF4
End If
If CDbl(txtEuroFaelligkeit2.Text) = 0 Then
KapitalF1 = DateDiff("m", (CDate(txtFaelligkeit1.Text)), (CDate(txtFaelligkeit2.Text))) * txtEuroFaelligkeit1.Text
Tage = Day(txtFaelligkeit2.Text) - 1
KapitalF2 = (Round(txtEuroFaelligkeit1.Text / Monatstage(txtFaelligkeit2.Text) * Tage, 2))
KapitalF = KapitalF1 + KapitalF2
End If
End If
End If
Ich bin für alle Tips und Tricks und Hinweise dankbar!
Liebe Grüße aus Würzburg
Anna