Ein Newbie fängt an! (Tageszinsen)

  • Sonstige

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    Ein Newbie fängt an! (Tageszinsen)

    Hi @All!

    Seit ich wieder OLDV habe,
    hat es mich gleich wieder gepackt.
    Das VB(A) Fieber.
    Na ja, ich habe mich auch gleich nach der VBA-Einführung im Unterricht
    zu Hause an den Rechner gesetzt und die Hausaufgabe geproggt.
    Allerdings nicht mit einer simplen InputBox und MsgBox, sondern mit einer UserForm.
    Ja, ich habe das wirklich selber gemacht.
    Hat zwar ne Weile gedauert, aber eigentlich is ja alles logisch.
    Na ja, allerdings habe ich jetzt ne Problem.
    Was ich nicht lösen kann.
    Und zwar:
    Ich habe ne UserForm erstellt, mit der ich die Tageszinsen berechnen kann (ja ja, die Anfänge).
    Das Problem is, das die Ergebnis-Ausgabe jetzt trotzdem noch in einer simplen MsgBox erfolgt.
    Das will ich aber nicht, weil es erstens nicht mehr zu meiner "wunderschönen" UserForm passt
    und zweitens sieht die MsgBox selber (mit Verlaub) scheiße aus.
    Na ja, auf jeden Fall habe ich das meinem Lehrer gemailt.
    Der fand es toll, das ich das mit ner UserForm gebastelt habe.
    (Nebenbei, kein simpler Lehrer; Dipl. Fachinformatiker im Bereich Anwendungsentwicklung und Systemintegration - oder so ähnlich)
    Er hat mir auch gleich ne Tipp gegeben,
    wie ich das mit der Ausgabe in einer 2ten UserForm machen kann.
    Leider hat er nur ne Stichwort gegeben.
    Mit dem konnte ich nicht soviel anfangen.

    Ich zitiere:
    "Die Ausgabe kannst du dann wiederum nur über ein selbstgebautes Userform
    regeln, wobei du dann allerdings das Ergebnis von der einen Userform zur
    anderen reichen musst (Stichwort: Prozeduraufruf mit call by value)."

    Also so gut bin ich ja wirklich nicht,
    um das zu verstehen.
    Kann mir vielleicht einer helfen?
    Ein Beispiel geben oder ne zeigen wie so ein Formel
    mit dem Befehl aussehen würde?
    Das wäre echt cool.
    Ich will hier nicht meine Hausaufgaben machen lassen oder so,
    ne, die sind ja eh freiwillig.
    Ich kann nur mit dem Stichwort alleine nix anfangen.
    Ach ja, habe die Excel-Datei auf meinem Webspace geladen (ne bissel langsam).

    Tageszinsen.xls

    MfG

    Newsmaniac

    PS: Ach ja, ich bin das erste mal hier.
    Werde mich im Uservorstellungsbereich mal vorstellen (wenn es den Bereich gibt). :D

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

    Hallo Newsmaniac,

    also mal kurz ne Lösung:
    - ne zweite Userform (frm2 ist der Name, um im Weitereren Text zu sparen) bauen, das kannst du ja jetzt schon.
    - auf frm2 setzt ein Ausgabe-Objekt, z.B. ein Label(lblOutput)
    - in deiner ersten Userform benötigst du folgenden Quelltext:
    frm2.Show
    frm2.lblOutput.Caption="blabla"

    Somit hast du eine Eigenschaftszuweisung vorgenommen (an die Eigenschaft Caption )

    Mir ist dagegen rätselhaft, was dein Diplom-Fachmann da meint, denn das benötige ich bei diesem Problem gar nicht, auch wenn es wichtig ist.

    Beim aufruf einer Prozedur (Sub ) kannst du Argumente übergeben, entweder ByValue oder ByReference. Es gibt da im Inet bestimmt tolle lange Erklärungen zu denen ich gerade keine Lust habe, mit ein wenig Quelltext kann man das sehr verständlich darstellen.

    Falls du noch ganz konkrete Fragen hast einfach wieder melden.

    Gruß Markus
    Ok, Tausend Dank.
    Es hat geklappt.
    Allerdings habe ich jetzt noch ne Problem.
    Wenn ich jetzt auf berechnen drücke,
    erscheint zwar meine 2ter UserForm,
    aber die enthält nicht das Ergebnis!
    Wenn ich das Fenster (also die 2ter UserForm)
    wieder schließe und noch mal auf "Berechnen" klicke,
    dann erscheint erst das Ergebnis in der UserForm.
    Was habe ich falsch gemacht?
    Ich habe die hochgeladene Datei aktualisiert.
    (Auf ne anderen, schnelleren Webspace)

    Tageszinsen.xls

    MfG

    Newsmaniac

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

    Hallo Newsmaniac,

    sorry, vertausche einfach zwei Zeilen, so ist es richtig:

    UserForm2.LblOutput.Caption = Tageszinsen
    UserForm2.Show


    nebenbei mal eine Frage, was berechnest du denn da:
    Tageszinsen = Anfangskapital * (Zinssatz / 100) * Laufzeit / 36000
    meinst du nicht das Teilen durch 100 ist ein wenig zuviel.

    Gruß Markus

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „alchimist“ ()

    Ne, denn die meißten tippen keine 0,02 (entspricht ja 2%) als Zinssatz ein.
    Also teile ich einfach durch hundert und man muss nur die "richtige" Prozentzahl eintippen.

    Z.B. 2%

    2 durch 100 gleich 0,02

    Aber ich denke du hast mich auch so verstanden. :D
    Nochmal danke für deine Hilfe.
    Jetzt muss ich mir mal überlegen was ich als nächstes mache.
    Schließlich will ich ja lernen, lernen, lernen. :)

    MfG

    Newsmaniac

    PS: Ich habe jetzt ne 3te UserForm gebaut,
    in die ein Link von einem Info Button war.
    Denn manchmal erscheint im Ergebnis ein E und ne -02 oder -03.
    Auf jeden Fall weiß ich ja,
    das das was mit wissenschaftlicher Zahlennotation
    zu tun hat.
    Deshalb habe ich neben dem Ergebnis ne Info-Button
    eingefügt,
    der eine 3te UserForm mit der Info öffnet.
    Und da is schon mein nächstes Problem.
    Ich würde gerne noch ne Schließen Button einfügen.
    Bei der 1ten UserForm habe ich als Befehl einfach End eingetippt.
    Der würde bei der 2ten und 3ten UserForm ja aber dann das ganz Programm beenden.
    Das will ich ja nicht.
    Muss ich da was eintippen mit CloseThis() oder so.
    Ich weiß nicht genau.
    Ich tippe jetzt einfach drauf.

    <a href="http://meister.yoda.bei.t-online.de/Tageszinsen.xls"</a>

    MfG

    Newsmaniac

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

    Hallo Newsmaniac,

    Marcus hat dir deine Frage ja schon beantwortet, aber zurück zu deinen "Tageszinsen", sorry habe so ein Wort noch nie gehört, aber ich interpretiere mal, das man einfach die Laufzeit in Tagen eingibt (richtig?) ...also müsstest du die Laufzeit durch 360 (das Bänkerjahr) teilen und den Prozentsatz durch 100, aber du teilst einmal durch 36000 und durch 100, daraus resultiert meine Frage.

    Ich dachte, du blidest das Produkt aus Kapital, Prozentsatz und Laufzeit und dividierst dann durch 36000, oder sehe ich da zwas falsch??

    Gruß Markus
    Hmmm, jep.

    Also die Laufzeit wird in Tagen angegeben.
    Und dann durch 360.
    Wegen dem Bänkerjahr.
    Da liegst du auch richtig.
    Das Problem ist,
    das ich vorher ja "nur" mit InputBox gearbeitet habe.
    Und da hatte ich um es zu vereinfachen die 100 vom Zinssatz,
    gleich mit den 360 Tagen der Laufzeit kombiniert.
    Als ich dann aber die UserForm programmiert habe,
    hatte ich vergessen, das dies ja noch der Fall war.
    Also hatte ich (um es wieder zu vereinfachen),
    den Zinssatz nochmal durch hundert geteilt (siehe oben).
    Nun, ja *hust*...
    Jetzt ist das ganze doppeltgemoppelt.
    Danke das du mich darauf hingewiesen hast.
    Ach ja, nebenbei eine Frage:

    Du hast Tageszinsen noch nie gehört?

    MfG

    Newsmaniac
    Also meiner Meinung nach, ist die ganze Formel sowieso
    falsch. Soweit ich weiß, lautet die Formel um den Zinssatz
    nach n Jahren zu berechnen:

    k<sub>n</sub> = k<sub>0</sub> * (1 + p/100)<sup>n</sup>

    wo k<sub>0</sub> das Startkapital und
    p der Zinssatz (in %) ist.
    Demnach würde die Formel um einen Tag zu berechnen
    so lauten:

    k<sub>n</sub> = k<sub>0</sub> * (1 + p/100)<sup>n</sup> / 360

    Möglich, dass ich mich irre, ich bin mir aber ziemlich sicher,
    dass die Formel so richtig ist.
    Hallo Unknown,

    Newsmaniac schreibt uns ja nicht was mit den Zinsen geschehen soll, bei deiner Variante setzt du einfach voraus, dass die Zinsen dem Kapital zugefügt werden und weiter verzinst werden (die Zinseszins-Formel). Wenn man sich die Zinsen jährlich auszahlen läßt, dann sieht die Sache verständlicherweise anders aus.

    Deine erste Formel verstehe ich, die zweite nicht. Egal ob du den Exponenten durch 360 teilst oder das Produkt, das Ergebnis muss falsch sein. Rechne doch nur mal aus, wieviel Zinsen du nach einem Tag bekommen würdest... Zinseszinsen sind aufgrund des Auszahlungstermines immer erst nach einem Jahr Laufzeit möglich, das ist alles in der zweiten Formel nicht enthalten. Naja, das war ja eingentlich auch gar nicht das Problem von Newsmaniac.

    @Newsmaniac, da bin ich ja beruhigt, dass sich das Ganze aufgeklärt hat.

    Gruß Markus
    So, ich habe jetzt richtig *freu*

    Allerdings ist da noch ein Sache die mich beunruhigt.
    Ich habe schon meinen Lehrer gemailt
    und meine Vermutung hat sich bestätigt.
    Die Sache mit dem Ergebnis.
    Das enthält am Ende manchmal ein E und eine -02 der -03, -04,...
    Ich vermutete das wäre was wissenschaftliches.
    Hier ist die Antwort von meinem Lehrer.

    "die geschichte mit dem e hab ich vergessen... das ist wissenschaftliche
    zahlennotation (kannst du auch im normalen excel zellformat einstellen).
    e-02 heißt, dass das komma um zwei stellen nach links verschoben werden
    muss. also wäre 4e-02 eigentlich 0,04. es gibt funktionen zum anpassen des
    ausgabeformats, um diese notation zu vermeiden.
    "

    Meine Vermutung war also richtig,
    aber wie "baue" ich das ein, was ich fett markiert habe?
    Na ja, mir solls eigentlich egal sein,
    aber interessieren tut es micht schon.
    Vor allem weil ich alles über VBA lernen will was geht *hechel* :D

    Ach noch was, ich habe meinen Lehrer gleich noch mal auf das Call by Value angesprochen.
    Ich hatte ihm gesagt, das ich das anders gelöste habe und das mit call by value nicht ganz verstehe(thx noch mal an euch).
    Hier seine Antwort:

    call by value bedeutet, eine andere funktion aufzurufen (oder prozedur, also
    die form) - das heißt das "call" - und dabei die benötigten werte
    ("values") mitgegeben werden. es geht auch über globale variablen, dass ist
    aber sehr unsauber und fehleranfällig.


    MfG

    Newsmaniac
    Hallo Newsmaniac,

    probiere mal folgendes aus:

    Tageszinsen = Format(Anfangskapital * Zinssatz * Laufzeit / 36000, "#,##0.0000")
    oder
    Tageszinsen = Format(Anfangskapital * Zinssatz * Laufzeit / 36000, "Standard")

    Informationen zur Format-Funktion erhälst du über die Hilfe.

    Mit ByVal und ByRef verhält es sich ein wenig komplizierter, suche mal unter Function-Anweisung in der Hilfe.

    Durchsuche mal das Inet, da haben sich schon viele Leute drüber auszulassen, als das ich auch noch ein Beispiel bringe.

    Gruß Markus
    alchimist schrieb am 15.11.2003 22:42
    Mit ByVal und ByRef verhält es sich ein wenig komplizierter, suche mal unter Function-Anweisung in der Hilfe.

    Durchsuche mal das Inet, da haben sich schon viele Leute drüber auszulassen, als das ich auch noch ein Beispiel bringe.


    Darüber habe ich was im allgemeinen VB Forum geschrieben!

    Edit: Hier -> vb-paradise.de/index.php?page=Thread&threadID=637
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()