Was mich halt wirklich wundert ist, dass es die letzten Wochen problemlos funktioniert hat und plötzlich seit gestern mir diese Fehlermeldung anzeigt (arbeite schon etwas länger an diesem Skript mit HIlfe von Tutorials etc.). Habe jetzt erstmal (wie mir schon empfohlen worden ist) alle ÄÖÜ Buchstaben entfernt und versucht die Schritte nochmal einzeln durchzugehen um zu verstehen von wo der Fehler herkommt könnte... vllt entdeckst du ja etwas @Gast86999 ?
'Basis der Arrays soll 1 sein
Option Base 1
'Anzahl der Wiederholungen
Const MC_WIEDERHOLUNG = 5000
'Definition der Datenstruktur für eine GuV
Type GuV
umsatz As Currency
ertraege As Currency
material As Currency
personal As Currency
afa As Currency
aufwendungen As Currency
aufwendungenFinanzergebnis As Currency
ertraegeFinanzergebnis As Currency
ergebnis As Currency
steuern As Currency
jahresueberschuss As Currency
End Type
'Das Datenfeld
Dim planungsreihe(MC_WIEDERHOLUNG, 11) As GuV
'Die Wachstumsraten
Dim umsatz_min As Single
Dim umsatz_max As Single
Dim ertraege_min As Single
Dim ertraege_max As Single
Dim material_min As Single
Dim material_max As Single
Dim personal_min As Single
Dim personal_max As Single
Dim afa_min As Single
Dim afa_max As Single
Dim aufwendungen_min As Single
Dim aufwendungen_max As Single
Dim aufwendungenFinanzergebnis_min As Single
Dim aufwendungenFinanzergebnis_max As Single
Dim ertraegeFinanzergebnis_min As Single
Dim ertraegeFinanzergebnis_max As Single
Dim steuern_min As Single
Dim steuern_max As Single
'Hier wird das Basisjahr eingelesen
Dim basisjahr As GuV
Function gen_wachstumsrate(min, max As Single) As Single
Dim x_rate As Single
x_rate = (max - min) * Rnd + min
gen_wachstumsrate = Round(1 + x_rate, 6)
End Function
Sub starte_planung()
Dim jahr As Byte
Dim n As Integer
Dim j As Byte
'Basisjahr einlesen
With basisjahr
.umsatz = Sheets("Basisdaten").Cells(4, 2).Value
.ertraege = Sheets("Basisdaten").Cells(5, 2).Value
.material = Sheets("Basisdaten").Cells(6, 2).Value
.personal = Sheets("Basisdaten").Cells(7, 2).Value
.afa = Sheets("Basisdaten").Cells(8, 2).Value
.aufwendungen = Sheets("Basisdaten").Cells(9, 2).Value
.aufwendungenFinanzergebnis = Sheets("Basisdaten").Cells(10, 2).Value
.ertraegeFinanzergebnis = Sheets("Basisdaten").Cells(11, 2).Value
.ergebnis = Sheets("Basisdaten").Cells(12, 2).Value
.steuern = Sheets("Basisdaten").Cells(13, 2).Value
.jahresueberschuss = Sheets("Basisdaten").Cells(14, 2).Value
End With
'Wachstumsraten einlesen
With Sheets("Basisdaten")
umsatz_min = .Cells(4, 4)
umsatz_max = .Cells(4, 5)
ertraege_min = .Cells(5, 4)
ertraege_max = .Cells(5, 5)
material_min = .Cells(6, 4)
material_max = .Cells(6, 5)
personal_min = .Cells(7, 4)
personal_max = .Cells(7, 5)
afa_min = .Cells(8, 4)
afa_max = .Cells(8, 5)
aufwendungen_min = .Cells(9, 4)
aufwendungen_max = .Cells(9, 5)
aufwendungenFinanzergebnis_min = .Cells(10, 4)
aufwendungenFinanzergebnis_max = .Cells(10, 5)
ertraegeFinanzergebnis_min = .Cells(11, 4)
ertraegeFinanzergebnis_max = .Cells(11, 5)
steuern_min = .Cells(13, 4)
steuern_max = .Cells(13, 5)
End With
'Eine Zufallsplanung erstellen
Randomize
For n = 1 To MC_WIEDERHOLUNG
'Das erste Jahr basiert auf Basisjahr
With planungsreihe(n, 1)
.umsatz = basisjahr.umsatz * gen_wachstumsrate(umsatz_min, umsatz_max)
.ertraege = basisjahr.ertraege * gen_wachstumsrate(erträge_min, ertraege_max)
.material = basisjahr.material * gen_wachstumsrate(material_min, material_max)
.personal = basisjahr.personal * gen_wachstumsrate(personal_min, personal_max)
.afa = basisjahr.afa * gen_wachstumsrate(afa_min, afa_max)
.aufwendungen = basisjahr.aufwendungen * gen_wachstumsrate(aufwendungen_min, aufwendungen_max)
.aufwendungenFinanzergebnis = basisjahr * gen_wachstumsrate(aufwendundungenFinanzergebnis_min, aufwendungenFinanzergebnis_max)
.ertraegeFinanzergebnis = basisjahr * gen_wachstumsrate(ertraegeFinanzergebnis_min, ertraegeFinanzergebnis_max)
.ergebnis = .umsatz - .material - .personal - .afa
.steuern = basisjahr.steuern * gen_wachstumsrate(steuern_min, steuern_max)
.jahresueberschuss = .ergebnis - .steuern
End With
'Die nächsten Jahre basieren auf Vorjahr
For jahr = 2 To 5
With planungsreihe(n, jahr)
.umsatz = planungsreihe(n, jahr - 1).umsatz * gen_wachstumsrate(umsatz_min, umsatz_max)
.ertraege = planungsreihe(n, jahr - 1).ertraege * gen_wachstumsrate(ertraege_min, ertraege_max)
.material = planungsreihe(n, jahr - 1).material * gen_wachstumsrate(material_min, material_max)
.personal = planungsreihe(n, jahr - 1).personal * gen_wachstumsrate(personal_min, personal_max)
.afa = planungsreihe(n, jahr - 1).afa * gen_wachstumsrate(afa_min, afa_max)
.aufwendungen = planungsreihe(n, jahr - 1).aufwendungen * gen_wachstumsrate(aufwendungen_min, aufwendungen_max)
.aufwendungenFinanzergebnis = planungsreihe(n, jahr - 1).aufwendungenFinanzergebnis * gen_wachstumsrate(aufwendungenFinanzergebnis_min, afa_max)
.ertraegeFinanzergbnis = planungsreihe(n, jahr - 1).ertraegeFinanzergebnis * gen_wachstumsrate(ertraegefinanzergbnis_min, ertraegeFinanzergebnis_max)
.ergebnis = .umsatz - .material - .personal - .afa
.steuern = planungsreihe(n, jahr - 1).steuern * gen_wachstumsrate(steuern_min, steuern_max)
.jahresueberschuss = .ergebnis - .steuern
End With
Next jahr
Next n
'Ausgabe in einzelne Tabellenblaetter
For n = 1 To MC_WIEDERHOLUNG
Sheets("Umsatz").Cells(n + 5, 1).Value = n
For j = 1 To 5
Sheets("Umsatz").Cells(n + 5, 1 + j).Value = planungsreihe(n, j).umsatz
Next j
Sheets("Ertraege").Cells(n + 5, 1).Value = n
For j = 1 To 5
Sheets("Ertraege").Cells(n + 5, 1 + j).Value = planungsreihe(n, j).ertraege
Next j
Sheets("Material").Cells(n + 5, 1).Value = n
For j = 1 To 5
Sheets("Material").Cells(n + 5, 1 + j).Value = planungsreihe(n, j).material
Next j
Sheets("Personal").Cells(n + 5, 1).Value = n
For j = 1 To 5
Sheets("Personal").Cells(n + 5, 1 + j).Value = planungsreihe(n, j).personal
Next j
Sheets("Afa").Cells(n + 5, 1).Value = n
For j = 1 To 5
Sheets("Afa").Cells(n + 5, 1 + j).Value = planungsreihe(n, j).afa
Next j
Sheets("Aufwendungen").Cells(n + 5, 1).Value = n
For j = 1 To 5
Sheets("Aufwendungen").Cells(n + 5, 1 + j).Value = planungsreihe(n, j).aufwendungen
Next j
Sheets("AufwendungFinanzergebnis").Cells(n + 5, 1).Value = n
For j = 1 To 5
Sheets("AufwendungFinanzergbnis").Cells(n + 5, 1 + j).Value = planungsreihe(n, j).aufwendungenFinanzergebnis
Next j
Sheets("ErträgeFinanzergebnis").Cells(n + 5, 1).Value = n
For j = 1 To 5
Sheets("ErtraegeFinanzergebnis").Cells(n + 5, 1 + j).Value = planungsreihe(n, j).ertraegeFinanzergebnis
Next j
Sheets("Ergebnis").Cells(n + 5, 1).Value = n
For j = 1 To 5
Sheets("Ergebnis").Cells(n + 5, 1 + j).Value = planungsreihe(n, j).ergebnis
Next j
Sheets("Steuern").Cells(n + 5, 1).Value = n
For j = 1 To 5
Sheets("Steuern").Cells(n + 5, 1 + j).Value = planungsreihe(n, j).steuern
Next j
Sheets("Jahresueberschuss").Cells(n + 5, 1).Value = n
For j = 1 To 5
Sheets("Jahresueberschuss").Cells(n + 5, 1 + j).Value = planungsreihe(n, j).jahresueberschuss
Next j
Next n
End Sub
'Berechnung der Haeufigkeit in einer Haeufigkeitstabelle
Sub Haeufigkeit()
Dim arr()
Dim sh As Worksheet
Dim myBin As Range, myData As Range
Set sh = Sheets("Dashboard")
With sh
Set myBin = Sheets("Dashboard").Range("A3:A33")
Set myData = Sheets("Jahresueberschuss").Range("F6:F10005")
arr = WorksheetFunction.Frequency(myData, myBin)
Sheets("Dashboard").Range("B3").Resize(UBound(arr) - LBound(arr)) = arr
End With
End Sub
'Statistische Auswertung
Sub statistics()
Sheets("Dashboard").Range("F3").Value = Application.WorksheetFunction.min(Sheets("Jahresueberschuss").Range("F6:F10005"))
Sheets("Dashboard").Range("F4").Value = Application.WorksheetFunction.max(Sheets("Jahresueberschuss").Range("F6:F10005"))
Sheets("Dashboard").Range("F5").Value = Application.WorksheetFunction.Average(Sheets("Jahresueberschuss").Range("F6:F10005"))
Sheets("Dashboard").Range("F6").Value = Application.WorksheetFunction.Median(Sheets("Jahresueberschuss").Range("F6:F10005"))
Sheets("Dashboard").Range("F7").Value = Application.WorksheetFunction.StDev(Sheets("Jahresueberschuss").Range("F6:F10005"))
Sheets("Dashboard").Range("F8").Value = Application.WorksheetFunction.VarP(Sheets("Jahresueberschuss").Range("F6:F10005"))
Sheets("Dashboard").Range("F9").Value = Application.WorksheetFunction.Skew(Sheets("Jahresueberschuss").Range("F6:F10005"))
Sheets("Dashboard").Range("F10").Value = Application.WorksheetFunction.Kurt(Sheets("Jahresueberschuss").Range("F6:F10005"))
End Sub
|