Excel Solver
08.01.2007 13:52:23
Stephan
Wenn ich das Programm starte erscheint beim ersten mal folgende Fehlermeldung:
Solver: Ein unerwarteter interner Fehler ist aufgetreten.
Kehre ich danach in die Excel-Oberfläche zurück und löse die Berechnung einmal manuell mit dem Solver und starte das Programm dann neu, dann funktioniert es.
Es wäre halt gut wenn es gleich funktionieren würde.
Der Programmcode lautet folgendermaßen:
Wobei die Berechnung erst ab dem Punkt ('Berechnung Fond) beginnt.
Die Fehlermedlung erscheint in der Zeile
'Solver
SolverOk SetCell:=Range("IU5"), MaxMinVal:=2, ValueOf:=0, ByChange:=Range("IU2")
Hat irgend jemand eine Idee dazu?
Danke.
lg Stephan
Option Explicit
Sub vol()
Dim b0, b1, varianz, merk, summev, sum, std, sa, gewicht, standardab As Double
Dim summe, summeb, standardabb, summel As Double
Dim k, i, j, zähler, zähler1 As Integer
Dim neu1 As ChartObject
Dim diagram1 As Series
'Maske
Worksheets(zählerb).Select
Worksheets(1).Select
Range("A5:A" & (gesamtzahl + 5)).Select
Selection.Copy
Worksheets(zählerb).Select
Range("A5").Select
ActiveSheet.Paste
Range("A1") = "Gewicht="
Range("B1") = "0,97"
Worksheets(1).Select
Range("C2:C" & (gesamtzahl + 5)).Select
Selection.Copy
Worksheets(zählerb).Select
Range("B2").Select
ActiveSheet.Paste
Range("B2") = "Fond"
Worksheets(anzahlblätter + 1).Select
Range("F1:F" & (gesamtzahl + 5)).Select
Selection.Copy
Worksheets(zählerb).Select
Cells(1, 3).Select
ActiveSheet.Paste
Worksheets(1).Select
Range("D2:D" & (gesamtzahl + 5)).Select
Selection.Copy
Worksheets(zählerb).Select
Range("D2").Select
ActiveSheet.Paste
Cells(2, 4) = "Fond"
Cells(3, 4) = "Mittelwert"
Worksheets(anzahlblätter + 1).Select
Range("G1:G" & (gesamtzahl + 5)).Select
Selection.Copy
Worksheets(zählerb).Select
Cells(1, 5).Select
ActiveSheet.Paste
Range("E2") = "Benchmark"
Range("E3") = "Mittelwert"
'Berechnung Fond
gewicht = Cells(1, 2)
b0 = 0
b1 = 0
zähler = fenster
Range("F2") = "Fond"
Range("F3") = "Mittelwert"
Range("F4") = "gewichtet"
Range("G2") = "Fond"
Range("G3") = "Varianz"
Range("G4") = "gewichtet"
Range("H2") = "Fond"
Range("H3") = "Standardabw."
Range("h4") = "gewichtet"
For k = 1 To (gesamtzahl - fenster)
Range("IU1") = "b0"
Range("IU2") = 0.5
Range("IV1") = "Gewicht"
Range("IV2") = gewicht
Range("IV6") = "Formel"
Range("IU4") = "Summe"
zähler1 = zähler
For i = 1 To zähler
ActiveSheet.Cells((6 + i), 256).Formula = "=(B" & (6 + i) & "*IV2^(" & zähler1 & "/2)-IU2*IV2^(" & zähler1 & "/2))^2"
zähler1 = zähler1 - 1
Next i
ActiveSheet.Cells(5, 255).Formula = "=sum(IV" & 7 & ":IV" & 6 + zähler & ")"
'Solver
SolverOk SetCell:=Range("IU5"), MaxMinVal:=2, ValueOf:=0, ByChange:=Range("IU2")
'Zeig nicht die Dialogbox :=true
SolverSolve UserFinish:=True
b0 = Range("IU2")
summev = 0
varianz = 0
std = 0
summel = 0
sa = 0
If k = 1 Then
varianz = (Cells((6 + zähler), 2) - b0) ^ 2
Else
varianz = ((1 - gewicht) / (1 - gewicht ^ (k - 1))) * (Cells((6 + zähler), 2) - b0) ^ 2 + ((gewicht - gewicht ^ (k - 1)) / (1 - gewicht ^ (k - 1))) * Cells((5 + zähler), 7)
End If
merk = varianz
std = varianz ^ (1 / 2) * (52) ^ (1 / 2)
Cells((6 + zähler), 6) = b0 * 52
Cells((6 + zähler), 7) = varianz
Cells((6 + zähler), 8) = std
zähler = zähler + 1
'Beendet Solver und setzt das Resultat zurück :=2; behält das Resultat:=1
SolverFinish KeepFinal:=2
'löschen der zwei Spalten
Range("IU:IV").Clear
Next k