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