#1 28. Mai 2009 [VBA] Finde Lösung nicht So Jungs, schreibe morgen ne Informatikklausur, und wollte halt dementsprechend gerade etwas üben. Es geht um eine Aufgabe zur Alterssicherung, in der Ergebnisse in Spalten ausgegeben werden. Nun klappt das auch soweit, aber es entwickelt sich ne Endlosschleife. Hab ewig überlegt woran es liegen könnte, weil bei "Debuggen" nur ein Fehler bei "bytAlter" etc ausgegeben wird, welcher aber sogar laut LÖSUNG! so sein muss, ich ralls nich... steinigt mich falls ich die Anfrage falsch stell oder drückt mir ne VW oder whatever, aber ich bin hier grad halb am austicken .... Spoiler Option Explicit Const bytcSparzeit = 20 Const Bytcalter = 40 Const curcZinssatz = 5.5 Const curcAbhebung = 12000 Const curcMin = 2500 Const curcMax = 5000 Dim cursparen As Currency Dim curAbhebung As Currency Dim CurGuthaben As Currency Dim curZinsen As Currency Dim bytZaehler As Byte Dim dblZeile As Double Dim dblAlter As Double Private Sub cmdRentenberechnung_Click() Cells.Delete Eingabe Verarbeitung End Sub Sub Eingabe() cursparen = InputBox("Geben Sie die jährliche Versicherungsprämie ein!" _ & Chr(13) & Chr(13) _ & "mindestens " & curcMin & "!" _ & Chr(13) & Chr(13) _ & "maximal " & curcMax & "!") Do While cursparen < curcMin Or cursparen > curcMax MsgBox ("Beachten Sie bei der Eingabe die Grenzbeträge!") cursparen = InputBox("Geben Sie die jährliche Versicherungsprämie ein!" _ & Chr(13) & Chr(13) _ & "mindestens " & curcMin & "!" _ & Chr(13) & Chr(13) _ & "maximal " & curcMax & "!") Loop End Sub Sub Verarbeitung() Cells(1, 1).Value = "Alter" Cells(1, 2).Value = "Guthaben" Cells(1, 3).Value = "Einzahlung" Cells(1, 4).Value = "Abhebung" Cells(1, 5).Value = "Zinsen" CurGuthaben = 0 dblAlter = Bytcalter - 1 For bytZaehler = 1 To bytcSparzeit dblZeile = 1 + bytZaehler dblAlter = dblAlter + 1 CurGuthaben = CurGuthaben + cursparen + curZinsen Cells(dblZeile, 1).Value = dblAlter Cells(dblZeile, 2).Value = CurGuthaben curZinsen = (CurGuthaben + cursparen) * curcZinssatz / 100 CurGuthaben = CurGuthaben + cursparen + curZinsen Cells(dblZeile, 3).Value = cursparen Cells(dblZeile, 4).Value = 0 Cells(dblZeile, 5).Value = curZinsen Next bytZaehler Do Until CurGuthaben <= 0 dblZeile = dblZeile + 1 dblAlter = dblAlter + 1 Cells(dblZeile, 1).Value = dblAlter Cells(dblZeile, 2).Value = CurGuthaben If curcAbhebung > CurGuthaben Then curAbhebung = CurGuthaben Else curAbhebung = curcAbhebung End If CurGuthaben = CurGuthaben - curAbhebung curZinsen = CurGuthaben * curcZinssatz / 100 CurGuthaben = CurGuthaben + curZinsen Cells(dblZeile, 3).Value = 0 Cells(dblZeile, 4).Value = curAbhebung Cells(dblZeile, 5).Value = curZinsen Loop End Sub Ich bedanke mich schonmal :* + Multi-Zitat Zitieren
#2 28. Mai 2009 AW: [VBA] Finde Lösung nicht hi, leider habe ich keine ahnung von finanz-mathe. aber irgendetwas passt mit deiner berechnung nicht. denn das CurGuthaben wird niemals gegen 0 laufen, wie du es in deiner while-schleife definiert hast. + Multi-Zitat Zitieren
#3 28. Mai 2009 AW: [VBA] Finde Lösung nicht Hm ja, das habe ich mir auch schon überlegt, aber wenn ich da was änder dann rechnet der net wirklich weiter wie er soll ^^ naja, grundstruktur passt ja, und solang es für ne 4 reicht danke digga :* + Multi-Zitat Zitieren
#4 29. Mai 2009 AW: [VBA] Finde Lösung nicht HiHo. Ich glaube ich hab deinen Fehler ^^ CurGuthaben = 0 dblAlter = Bytcalter - 1 For bytZaehler = 1 To bytcSparzeit dblZeile = 1 + bytZaehler dblAlter = dblAlter + 1 CurGuthaben = CurGuthaben + cursparen + curZinsen Cells(dblZeile, 1).Value = dblAlter Cells(dblZeile, 2).Value = CurGuthaben curZinsen = (CurGuthaben + cursparen) * curcZinssatz / 100 CurGuthaben = CurGuthaben + cursparen + curZinsen Cells(dblZeile, 3).Value = cursparen Cells(dblZeile, 4).Value = 0 Cells(dblZeile, 5).Value = curZinsen Next bytZaehler Ich glaube die dicke, unterstrichene Zeile is der Fehler. Du berechnest in einem Jahr 2x Zinsen und außerdem "verdoppelst" du das Guthaben ... Dann kommt der Überlauf-Fehler weil nach 6-7-8 Jahren die Zinsen mehr einbringen als die 12.000 die abgehoben werden. Die dicke, unterstrichene Zeile gehört da gar nicht rein! Schmeiss die raus und das ganze sieht realistisch aus :] GrEEtZ MaViL + Multi-Zitat Zitieren