[Code] [VBA] Finde Lösung nicht

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von p0rns7aaaRR, 28. Mai 2009 .

Schlagworte:
  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 :*
     
  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.
     
  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 :*
     
  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
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.