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

prozentuale Erhöhung/Summe mit Schleife

prozentuale Erhöhung/Summe mit Schleife
maddin
Hallo...
Ich hab zwei Probleme, die ich mit VBA lösen muss.
1. Problem:
Ich hab eine Tabelle, die in der ersten Spalte die Jahre anzeigt und in der anderen soll der Strompreis reinkommen. Das Problem ist, dass der Wert vom Strompreis sich jedes Jahr um 4% erhöhen soll. Der Wert sk und hk soll sich um 4% erhöhen.
2.Problem:
Die Summe von der Spalte Cells(9+ lv, 13) und Cells(9 +lv, 6) werden gebildet. Diese Summe soll verglichen werden, wenn die eine Summe kleiner als die andere ist, soll das Programm aufhören. Nur so wie ich es hier probiere bleibt das Programm hängen.
Ich hoffe mir kann hier jemand weiter helfen. Ich sag schonmal danke...
gruß smogy

For lv = 1 To 100 Step 1
Do Until gk 

AW: prozentuale Erhöhung/Summe mit Schleife
08.09.2009 22:27:20
Fettertiger
Hallo smogy,
da scheint sich einer mit Photovoltaik zu beschäftigen...
Kannst Du mal eine Musterdatei hochladen, dann wird dein erstes Problem sicherlich klarer.
Zum Problem 2 versuche vielleicht mal das:
Sub test()
For lv = 1 To 100 Step 1
ActiveWorkbook.Worksheets("tabelle").Cells(9 + lv, 2) = lv + 2008
ActiveWorkbook.Worksheets("tabelle").Cells(9 + lv, 3) = wp
ActiveWorkbook.Worksheets("tabelle").Cells(9 + lv, 4) = ww
ActiveWorkbook.Worksheets("tabelle").Cells(9 + lv, 5) = abschreibung
ActiveWorkbook.Worksheets("tabelle").Cells(9 + lv, 6) = wp + ww + abschreibung
ActiveWorkbook.Worksheets("tabelle").Cells(9 + lv, 7) = lv + 2008
ActiveWorkbook.Worksheets("tabelle").Cells(9 + lv, 9) = wh
ActiveWorkbook.Worksheets("tabelle").Cells(9 + lv, 10) = sk
ActiveWorkbook.Worksheets("tabelle").Cells(9 + lv, 11) = hk
ActiveWorkbook.Worksheets("tabelle").Cells(9 + lv, 12) = abschreibung2
ActiveWorkbook.Worksheets("tabelle").Cells(9 + lv, 13) = sk + hk + abschreibung2
gk = Application.WorksheetFunction.Sum(Range(Cells(10, 6), Cells(10 + lz, 6)))
gk2 = Application.WorksheetFunction.Sum(Range(Cells(10, 13), Cells(10 + lz, 13)))
if gk 
Eventuell kam Dein abbruch auch vom fehlenden Istgleich-Zeichen in dieser Zeile:
ActiveWorkbook.Worksheets("tabelle").Cells(9 + lv, 7) = lv + 2008
Gruss
Fettertiger
P.S. Rückmeldung wäre nett
Anzeige
AW: prozentuale Erhöhung/Summe mit Schleife
09.09.2009 03:03:57
Fettertiger
Habe gerade gesehen dass es da ja noch eine zweite Variable zum hochzählen gibt (lz). Ohne die Datei - bzw den rest des Makros zu kennen kann ich nur vermuten was das soll - ich kann mir aber vorstellen, dass Du das hochzählen von lz über das Do until-loop machen wolltest. Dann musst Du in Deinem Ursprünglichen Code noch folgende Zeile vor das Loop setzen:
lz = lz+1
Ausserdem musst Du noch vor dem ersten Schleifendurchlauf den Startwert von lz festlegen (ausser Du startest bei 0, dann reicht Dir ein Dim as long bzw ein Dim as Integer
Gruss
Fettertiger
AW: prozentuale Erhöhung/Summe mit Schleife
09.09.2009 10:42:33
maddin
Danke für die Antwort.
Mit deiner Lösung möchte ich es nicht ausprobieren, weil ich diese Arbeit im Rahmen des Studiums machen muss. Mein Professor legt wert auf einer verschachtelten Schleife. Deswegen hab ich es mit Do Loop probiert.
So ich erklär mal genauer wie das Makro funktionieren soll. Einmal rechnet das Makros eine Photovoltaikanalge mit Wärmepumpe aus (mit Gesamtkosten) und einmal einer konventionellen System (Gaskessel). Das erste Makro rechnet nach einer festen Laufzeit. Das funktioniert. Das zweite soll solange rechnen, bis die Photovoltaikanlage billiger gegenüber der anderen Anlange ist und das soll es aufhören. Ich hoffe es ist verständlich. Ich kopier die einfach mal den ganzen Quelltest rein. So wie es da steht bleibt es immernoch hängen.

Sub amor()
Dim lz, lz2, lv As Integer
Dim gesamtpreis, gesamtpreis2, ww As Currency
Dim wp, abschreibung, abschreibung2, wh As Currency
Dim sk, hk As Currency
Dim gk, gk2 As Currency
ActiveWorkbook.Worksheets("tabelle").Range("B9,c9,d9,e9,f9,h9,i9,j9,k9,l9,m9").Select
Selection.Interior.ColorIndex = 43
ActiveWorkbook.Worksheets("tabelle").Range("B9") = "Jahr"
ActiveWorkbook.Worksheets("tabelle").Range("C9") = "Wartung Photovoltaik"
ActiveWorkbook.Worksheets("tabelle").Range("D9") = "Wartung Wärmepumpe"
ActiveWorkbook.Worksheets("tabelle").Range("E9") = "Abschreibung"
ActiveWorkbook.Worksheets("tabelle").Range("F9") = "Kosten"
ActiveWorkbook.Worksheets("tabelle").Range("h9") = "Jahr"
ActiveWorkbook.Worksheets("tabelle").Range("i9") = "Wartung Heizsystem"
ActiveWorkbook.Worksheets("tabelle").Range("j9") = "Stromkosten"
ActiveWorkbook.Worksheets("tabelle").Range("k9") = "Heizkosten"
ActiveWorkbook.Worksheets("tabelle").Range("l9") = "Abschreibung"
ActiveWorkbook.Worksheets("tabelle").Range("m9") = "Kosten"
lz = ActiveWorkbook.Worksheets("Nenndaten").Range("lz").Value
gesamtpreis = ActiveWorkbook.Worksheets("kostenrechnung").Range("gesamtpreis").Value
gesamtpreis2 = ActiveWorkbook.Worksheets("kostenrechnung").Range("gesamtpreis2").Value
abschreibung = 0.05 * gesamtpreis
abschreibung2 = 0.05 * gesamtpreis2
wp = 50
ww = 50
sk = 44
hk = 1500
wh = 150
g2 = 1
gk1 = 2
For lv = 1 To 100 Step 1
Do Until gk 

Anzeige
AW: prozentuale Erhöhung/Summe mit Schleife
09.09.2009 15:56:57
fcs
Hallo maddin,
ohne Dateien kann man schlecht sagen was los ist.
Auf alle Fälle gibt es Probleme wenn das Blatt "Tabelle" nicht das aktive Blatt ist, wenn das Makro gestartet wird. Dann greift
WorksheetFunction.Sum(Range(....))
auf die falschen Zellen zu -nämlich die im aktiven Blatt statt im Blatt "Tabelle".
Hier mal eine überarbeitete und übersichtlicher aufbereitete Fassung. Durch Verwendung der With-Methode und "." vor Range und Cells wird der Verweis auf das korrekte tabellenblatt sichergestellt.
Hinweis: Bei der Deklaration von Variablen reicht es nicht "As Typ" nur am Ende der Dim-Zeile zuschreiben. Jede Variable muss einzeln explizit Deklariert werden!
Gruß
Franz
Sub amor()
Dim lz As Integer, lz2 As Integer, lv As Integer
Dim gesamtpreis As Currency, gesamtpreis2 As Currency, ww As Currency
Dim wp As Currency, abschreibung As Currency, _
abschreibung2 As Currency, wh As Currency
Dim sk As Currency, hk As Currency
Dim gk As Currency, gk2 As Currency
Dim wksTabelle As Worksheet, wksNenndaten As Worksheet, _
wksKostenrechnung As Worksheet
Set wksTabelle = ActiveWorkbook.Worksheets("Tabelle")
Set wksNenndaten = ActiveWorkbook.Worksheets("Nenndaten")
Set wksKostenrechnung = ActiveWorkbook.Worksheets("kostenrechnung")
With wksTabelle
.Range("B9,c9,d9,e9,f9,h9,i9,j9,k9,l9,m9").Interior.ColorIndex = 43
.Range("B9") = "Jahr"
.Range("C9") = "Wartung Photovoltaik"
.Range("D9") = "Wartung Wärmepumpe"
.Range("E9") = "Abschreibung"
.Range("F9") = "Kosten"
.Range("h9") = "Jahr"
.Range("i9") = "Wartung Heizsystem"
.Range("j9") = "Stromkosten"
.Range("k9") = "Heizkosten"
.Range("l9") = "Abschreibung"
.Range("m9") = "Kosten"
End With
lz = wksNenndaten.Range("lz").Value
gesamtpreis = wksKostenrechnung.Range("gesamtpreis").Value
gesamtpreis2 = wksKostenrechnung.Range("gesamtpreis2").Value
abschreibung = 0.05 * gesamtpreis
abschreibung2 = 0.05 * gesamtpreis2
wp = 50
ww = 50
sk = 44
hk = 1500
wh = 150
'  g2 = 1      'Nicht verwendete Variable ?
'  gk1 = 2      'Nicht verwendete Variable ?
For lv = 1 To 100 Step 1
Do Until gk 

Anzeige
AW: prozentuale Erhöhung/Summe mit Schleife
09.09.2009 17:12:17
maddin
Danke auch für diese Anwort. Das Programm ist danke deiner Mühe jetzt übersichtlicher. Nur das Problem besteht weiter, so wie es dort ist, bleibt es hängen. Desweiteren ist das Problem mit der prozentualen Erhöhung nicht gelöst.
Trotzdem nochmals vielen Dank für die Hilfe
AW: prozentuale Erhöhung/Summe mit Schleife
09.09.2009 19:18:30
fcs
Hallo Maddin,
hast denn mal manuell nachgerechnet, ob innerhalb von 20 Jahren (dann sind die Anlagen bei 5% Abschreibung je Jahr abgeschrieben) gk2 kleiner als gk wird?
Mit der jährlichen prozentalen Steigerung:
das muss wie eine Zinses-Zins-Rechnung durchgeführt werden. Beispiel:
Sub Steigern()
Jahr = 2008
sk = 1000 'Stromkosten heute
PZ = 4 / 100 'jährlich Steigerung 4%
For Lv = 0 To 100
Cells(Lv + 2, 1).Value = Jahr + Lv
Cells(Lv + 2, 2).Value = Application.WorksheetFunction.Round(sk * (1 + PZ) ^ (Lv), 2)
Next
End Sub

Gruß
Franz
Anzeige
AW: prozentuale Erhöhung/Summe mit Schleife
09.09.2009 22:28:38
maddin
also gk wird irgendwann kleiner als gk2, nicht wie bei dir beschrieben gk2 wird kleiner als gk...ob das jetzt nach 20 oder 50jahren ist, sollte dem programm egal sein. ist ja von werten zu werten unterschiedlich. das programm soll einfach funktionieren, ob es realistisch ist oder nicht. wie gesagt, die arbeit ist für eine prüfung und in der prüfung ist die umsetzung mit vba wichtig, deswegen brauch ich eine verschachtelte schleife...ich werd morgen früh mit dem zinses-zins ausprobieren...dann werd ich nochmal eine rückmeldung zwecks funktionalität schreiben...trotzdem danke schön...
mfg smogy
Anzeige
AW: prozentuale Erhöhung/Summe mit Schleife
09.09.2009 07:48:17
David
Hallo.
"Musst" du das Problem wirklich mit VBA lösen oder "glaubst" du nur zu müssen? ;-)
Meiner Meinung ist das ohne Probleme per Formel lösbar.
Gruß
David

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige