Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
240to244
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
240to244
240to244
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Codeoptimierung

Codeoptimierung
05.04.2003 08:08:04
Anna
Guten Morgen,

ich hab folgenden Code, der auch funktioniert aber ich finde ihn zu unprofessionell. Wer kann mir einen Vorschlag machen, wie ich auf das Ende des Monats komme und wie ich das ganze in eine Schleife packe?

Hintergrund ist, ich habe zwei Daten: Zinsbeginn und Zinsende. Jetzt muss ich jeden Monat dazwischen mit Beginn und Ende auflisten, weil für jeweils ein Monat die Zinsen berechnet werden.

'Zinsmonate anzeigen
txtAnfangZinsmonat1 = frmZinsen.txtBeginnVerzinsung.Value
txtZinsmonat1Ende = DateSerial(Year(txtAnfangZinsmonat1), Month(txtAnfangZinsmonat1) + 1, (Day(txtAnfangZinsmonat1) - 1))

If txtZinsmonat1Ende > "" And txtZinsmonat1Ende < txtEndeVerzinsung Then
txtAnfangZinsmonat2 = DateSerial(Year(txtAnfangZinsmonat1), Month(txtAnfangZinsmonat1) + 1, (Day(txtAnfangZinsmonat1)))
txtZinsmonat2Ende = DateSerial(Year(txtAnfangZinsmonat2), Month(txtAnfangZinsmonat2) + 1, (Day(txtAnfangZinsmonat2) - 1))
End If
If txtZinsmonat2Ende > "" And txtZinsmonat2Ende < txtEndeVerzinsung Then
txtAnfangZinsmonat3 = DateSerial(Year(txtAnfangZinsmonat2), Month(txtAnfangZinsmonat2) + 1, (Day(txtAnfangZinsmonat2)))
txtZinsmonat3Ende = DateSerial(Year(txtAnfangZinsmonat3), Month(txtAnfangZinsmonat3) + 1, (Day(txtAnfangZinsmonat3) - 1))
End If
If txtZinsmonat3Ende > "" And txtZinsmonat3Ende < txtEndeVerzinsung Then
txtAnfangZinsmonat4 = DateSerial(Year(txtAnfangZinsmonat3), Month(txtAnfangZinsmonat3) + 1, (Day(txtAnfangZinsmonat3)))
txtZinsmonat4Ende = DateSerial(Year(txtAnfangZinsmonat4), Month(txtAnfangZinsmonat4) + 1, (Day(txtAnfangZinsmonat4) - 1))
End If
If txtZinsmonat4Ende > "" And txtZinsmonat4Ende < txtEndeVerzinsung Then
txtAnfangZinsmonat5 = DateSerial(Year(txtAnfangZinsmonat4), Month(txtAnfangZinsmonat4) + 1, (Day(txtAnfangZinsmonat4)))
txtZinsmonat5Ende = DateSerial(Year(txtAnfangZinsmonat5), Month(txtAnfangZinsmonat5) + 1, (Day(txtAnfangZinsmonat5) - 1))
End If
If txtZinsmonat5Ende > "" And txtZinsmonat5Ende < txtEndeVerzinsung Then
txtAnfangZinsmonat6 = DateSerial(Year(txtAnfangZinsmonat5), Month(txtAnfangZinsmonat5) + 1, (Day(txtAnfangZinsmonat5)))
txtZinsmonat6Ende = DateSerial(Year(txtAnfangZinsmonat6), Month(txtAnfangZinsmonat6) + 1, (Day(txtAnfangZinsmonat6) - 1))
End If
If txtZinsmonat6Ende > "" And txtZinsmonat6Ende < txtEndeVerzinsung Then
txtAnfangZinsmonat7 = DateSerial(Year(txtAnfangZinsmonat6), Month(txtAnfangZinsmonat6) + 1, (Day(txtAnfangZinsmonat6)))
txtZinsmonat7Ende = DateSerial(Year(txtAnfangZinsmonat7), Month(txtAnfangZinsmonat7) + 1, (Day(txtAnfangZinsmonat7) - 1))
End If
If txtZinsmonat7Ende > "" And txtZinsmonat7Ende < txtEndeVerzinsung Then
txtAnfangZinsmonat8 = DateSerial(Year(txtAnfangZinsmonat7), Month(txtAnfangZinsmonat7) + 1, (Day(txtAnfangZinsmonat7)))
txtZinsmonat8Ende = DateSerial(Year(txtAnfangZinsmonat8), Month(txtAnfangZinsmonat8) + 1, (Day(txtAnfangZinsmonat8) - 1))
End If
If txtZinsmonat8Ende > "" And txtZinsmonat8Ende < txtEndeVerzinsung Then
txtAnfangZinsmonat9 = DateSerial(Year(txtAnfangZinsmonat8), Month(txtAnfangZinsmonat8) + 1, (Day(txtAnfangZinsmonat8)))
txtZinsmonat9Ende = DateSerial(Year(txtAnfangZinsmonat9), Month(txtAnfangZinsmonat9) + 1, (Day(txtAnfangZinsmonat9) - 1))
End If
If txtZinsmonat9Ende > "" And txtZinsmonat9Ende < txtEndeVerzinsung Then
txtAnfangZinsmonat10 = DateSerial(Year(txtAnfangZinsmonat9), Month(txtAnfangZinsmonat9) + 1, (Day(txtAnfangZinsmonat9)))
txtZinsmonat10Ende = DateSerial(Year(txtAnfangZinsmonat10), Month(txtAnfangZinsmonat10) + 1, (Day(txtAnfangZinsmonat10) - 1))
End If
If txtZinsmonat10Ende > "" And txtZinsmonat10Ende < txtEndeVerzinsung Then
txtAnfangZinsmonat11 = DateSerial(Year(txtAnfangZinsmonat10), Month(txtAnfangZinsmonat10) + 1, (Day(txtAnfangZinsmonat10)))
txtZinsmonat11Ende = DateSerial(Year(txtAnfangZinsmonat11), Month(txtAnfangZinsmonat11) + 1, (Day(txtAnfangZinsmonat11) - 1))
End If
If txtZinsmonat11Ende > "" And txtZinsmonat11Ende < txtEndeVerzinsung Then
txtAnfangZinsmonat12 = DateSerial(Year(txtAnfangZinsmonat11), Month(txtAnfangZinsmonat11) + 1, (Day(txtAnfangZinsmonat11)))
txtZinsmonat12Ende = DateSerial(Year(txtAnfangZinsmonat12), Month(txtAnfangZinsmonat12) + 1, (Day(txtAnfangZinsmonat12) - 1))
End If

Vielen Dank für jeden Tip
Liebe Grüße aus Würzburg
Anna

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Codeoptimierung
06.04.2003 22:03:01
gordon

Hallo Anna,

etwas entscheidendes fehlt - Was steht in txtEndeVerzinsung ?

Prinzipiell kannst Du besser mit einem Array (s. auch Onlinehilfe 'Datenfeld') arbeiten, im Sinne von:
Dim txtZinsmonatEnde(1 to 12) ' wenn nur 12 Monate
oder auch Dim txtZinsmonatEnde(100) ' wenn für 100 Monate
oder auch Dim txtZinsmonatEnde() ' dann jeweils wenn die korrekte Monatszahl erst zur Laufzeit des Programmes bekannt ist, redimensionieren, z.B.
Dim txtZinsmonatEnde() as Date
dim laufz as integer
laufz = 50
Redim txtZinsmonatEnde(laufz)
dann hast Du ein Array mit 50 Variablen des Typs Date.
Gilt für txtAnfangZinsmonat natürlich analog.

Dann kannst Du die einzelnen Werte übersichtlich mit einer Schleife ansprechen
dim i as long
for i = 1 to irgendwas step 1
if txtZinsmonatEnde(i) < txtEndeVerzinsung then
txtAnfangZinsmonat(i + 1)= DateSerial...
txtZinsmonatEnde(i + 1) = ...
end if
next i

Gruß
gordon


Anzeige
Re: Codeoptimierung
07.04.2003 14:06:35
Anna

Danke Gordon,
ich habe gar nicht mehr mit einer Antwort gerechnet und vielleicht liest Du jetzt auch meine nicht mehr.
"txtEndeVerzinsung" ist das zweite und letzte Datum an dem eben die Verzinsung endet, sowie "txtBeginnverzinsung" das erste Datum ist, nämlich das, an dem die Verzinsung beginnt.
Was mich halt auch stört, ist dieses Hilfskonstrukt um auf den letzten des Monats zu kommen; gibt es da keine andere Lösung?
Liebe Grüße
Anna

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige