Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1296to1300
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
Inhaltsverzeichnis

VBA Schleife

VBA Schleife
07.02.2013 15:26:56
Aleks
Hallo,
ich weißt, es ist unhöflich, sich irgendwo anzumelden und direkt mit einer Frage zu starten. Aber genau dies muss ich leider direkt machen.
Ich habe eine Aufgabe und kriege sie einfach nicht gelöst, die Aufgabe lautet :
Nacheinander werden eine Reihe von Zahlen eingegeben. Nach Eingabe der Zahl 0 wird der Durchschnittswert der eingegebenen Zahl ausgegbeben.
Mein bisheriger Versuch sieht so aus:

Public Sub Aufgabe_3a()
Dim Summe As Currency
Dim Zahl As Currency
Dim Zähler As Currency
Summe = 0
Zähler = 0
Zahl = InputBox("Bitte Zahl eingeben")
Summe = Summe + Zahl
Zähler = Zähler + 1
Do While Zahl  0
Summe = Summe / Zähler
MsgBox Summe
Loop
End Sub
Dann habe ich noch eine Aufgabe die ich ebenfalls nicht gelöst kriege, sie lautet: Ein eingezahlter Betrag wird in jedem Jahr mit einem gleichen Zinssatz verzinst. Es soll für eine einzugebende Anzahl von Jahren, einen einzugebenden Betrag und einen einzugebenden Zinssatz das Kapital am Ende eines jeden Jahres ausgegeben werden.
Mein versuch sieht so aus:

Public Sub Aufgabe_4()
Dim Betrag As Currency
Dim Zinssatz As Currency
Dim Jahre As Currency
Dim Summe As Currency
Dim AktJahre As Currency
AktJahre = 1
Betrag = InputBox("Bitte betrag eingeben")
Jahre = InputBox("Bitte jahre eingeben")
Zinssatz = InputBox("Bitte zinssatz eingeben")
Do While AktJahre  Jahre
Summe = Betrag * (Zinssatz / 100) ^ AktJahre
MsgBox Summe
AktJahre = AktJahre + 1
Loop
End Sub
Ich hoffe mir kann geholfen werden
Mit freundlichen Grüßen
Aleks

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Schleife
07.02.2013 15:43:06
Klaus
Hi,
sieht ein wenig wie Hausaufgaben aus :-)
Public Sub Aufgabe_3a()
Dim Summe As Currency
Dim Zahl As Currency
Dim Zähler As Currency
Summe = 0
Zähler = 0
Zahl = 999
While Zahl  0
Zahl = InputBox("Bitte Zahl eingeben")
Summe = Summe + Zahl
Zähler = Zähler + 1
Wend
Summe = Summe / Zähler
MsgBox Summe
End Sub

Public Sub Aufgabe_4()
Dim Betrag As Currency
Dim Zinssatz As Currency
Dim Jahre As Currency
Dim Summe As Currency
Dim AktJahre As Currency
AktJahre = 1
Betrag = InputBox("Bitte betrag eingeben")
Jahre = InputBox("Bitte jahre eingeben")
Zinssatz = InputBox("Bitte zinssatz eingeben")
While AktJahre  Jahre
Summe = Betrag * (Zinssatz / 100) ^ AktJahre
MsgBox Summe
AktJahre = AktJahre + 1
Wend
End Sub
Diese While-Wend schleifen sind allerdings ganz schön Retro. Aus welchem Jahr ist dein Aufgabenbuch?
Grüße,
Klaus M.vdT.

Anzeige
AW: VBA Schleife
07.02.2013 15:47:08
Aleks
Hallo Klaus M.vdT,
vielen Dank.
Die Aufgaben sind tatsächlich sowas wie Hausaufgaben, es sind vorbereitungszettel für eine Klausur.
Damit hast du mir aber schon sehr geholfen.
Grüße Aleks

kleiner Fehler
07.02.2013 15:52:22
Klaus
Hi Alex,
in Aufgabe_3a() wird der Zähler auch hochgeschaltet, wenn in der Inputbox "0" eigegeben wird. Daher am Ende den Mittelwert so:
Summe = Summe / (Zähler - 1)
Das ganze braucht dann noch eine Fehlerbehandlung, um Div/0! zu verhindern. Eigentlich reicht da ein "IF Zähler = 1 Then" für.
In der zweiten Aufgabe würd ich das WEND rauswerfen, sowas benutz man eigentlich nicht mehr. Ausserdem die MsgBox aus der Schleife rausnehmen, sonst clickst du dich tot wenn die Laufzeit zB 100 Jahre sind.
Stattdessen:
For AktJahre = 1 to Jahre
Summe = Betrag * (Zinssatz / 100) ^ AktJahre
'MsgBox Summe
Next AktJahre
MsgBox Summe

Ich bin nicht gut in Finanz-Mathematik, aber es müsste auch eine Formel geben um Zins+Zinseszins ganz ohne Schleife zu berechnen. Aber ich nehme an, darum geht es hier nicht.
Grüße,
Klaus M.vdT.

Anzeige
AW: kleiner Fehler
07.02.2013 16:04:16
Aleks
Hey,
also wie würde es dann komplett aussehen =)

AW: kleiner Fehler
07.02.2013 16:12:05
Klaus
Aleks,
das ist jetzt nicht dein Ernst, oder? Du kannst nichtmal eine Zeile in einem bestehenden Code ändern?
Naja, ist ja nicht meine Bildung.

Public Sub Aufgabe_3a()
Dim Summe As Currency
Dim Zahl As Currency
Dim Zähler As Currency
Summe = 0
Zähler = 0
Zahl = 999
While Zahl  0
Zahl = InputBox("Bitte Zahl eingeben")
Summe = Summe + Zahl
Zähler = Zähler + 1
Wend
if Zähler > 0 then Summe = Summe / (Zähler - 1 )
MsgBox Summe
End Sub
Public Sub Aufgabe_4()
Dim Betrag As Currency
Dim Zinssatz As Currency
Dim Jahre As Currency
Dim Summe As Currency
Dim AktJahre As Currency
AktJahre = 1
Betrag = InputBox("Bitte betrag eingeben")
Jahre = InputBox("Bitte jahre eingeben")
Zinssatz = InputBox("Bitte zinssatz eingeben")
'For AktJahre = 1 to Jahre
Summe = Betrag * (Zinssatz / 100) ^ AktJahre
'MsgBox Summe
Next AktJahre
MsgBox Summe
End Sub
Die Rechtschreibfehler (jahre klein usw) beseitigst du aber bitte selber, ja?
Achso, dass die Zinssatz-Jahre-Formel so wie sie ist völlig Banane ist hast du aber verstanden? Ich habs gerade erst gesehen, da ich vorher nur blind C&P gemacht habe.
Grüße,
Klaus M.vdT.

Anzeige
OT: Wenn's bei der Klausur in 1.Linie ...
07.02.2013 16:39:50
Luc:-?
…um (VBA-)Programmierung geht, Klaus,
wäre so …
„das ist jetzt nicht dein Ernst, oder? Du kannst nichtmal eine Zeile in einem bestehenden Code ändern?“
…ein suboptimales Ergebnis durchaus verdient — findest du nicht auch? ;->>
Gruß Luc :-?

AW: OT: Wenn's bei der Klausur in 1.Linie ...
07.02.2013 17:49:31
Klaus
Stimmt schon, Luc, nur es tut mir halt "weh", solch unoptimierten Code stehen zu lassen. Immerhin sind keine .select drin :-)
Ansonsten helfe ich hier, weil ich Spaß dran hab. Ob ich damit einem Buchhalter helfe, tausende von Euro zu sparen oder einem Schüler, sich mit ner 4 durchzuschummeln kann mir am Ende egal sein - ich bekomme ja nix dafür.
Grüße,
Klaus M.vdT.

Anzeige
So ist es... :-[| owT
07.02.2013 18:32:32
Luc:-?
:-?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige