ich habe ein kleines Problem beim berechnen einer Arbeitmappe! Wenn ich die Berechnung zum ersten Mal starte, nachdem ich eine Änderung (hinzufügen von neuen Formeln, Änderungen im VBA – Code) irgendwo in der Mappe vorgenommen habe, dauert das Ganze eine halbe Ewigkeit (mehrere Stunden) bis ich ein Ergebnis bekomme. Wenn ich danach, ohne etwas an Formeln oder Code zu ändern, bei den Zahlenwerten in den Zellen eine Änderung vornehme, so dass die Berechnung lediglich ein anders Ergebnis liefert, ist die ganze Geschichte innerhalb von ein paar Minuten erledigt.
Ich kann die Mappe speichern, den Computer ausschallten und wieder hochfahren und die Berechnung dauert wieder nur einige Minuten, wenn ich keine Änderungen an Formeln oder Code vornehme!
Daher die Frage: Hat jemand eine Idee woran das liegen könnte?
Innerhalb der Mappe verwende ich eine selbstgeschriebene Excel Funktion (s.u.), die ein Gleichungssystem löst und das Ergebnis als Array zurückgibt.
Vielen Dank schon mal für Eure Antworten
MfG
Martin
Code der Funktion:
Function zirkver(Alpha As Variant, f As Variant, b As Variant) As Variant
Dim i As Integer, a As Integer, m As Long, n As Integer
Dim gamma() As Double, gamma_alt() As Double, hvar() As Double, bb() As Double
If UBound(Alpha.Value, 2) <> UBound(f.Value, 2) Or _
UBound(b.Value, 1) <> UBound(b.Value, 2) Or _
UBound(b.Value, 1) <> UBound(Alpha.Value, 2) Or _
UBound(b.Value, 1) <> UBound(f.Value, 2) _
Then
Exit Function
End If
m = UBound(Alpha.Value, 2)
ReDim bb(m)
ReDim gamma(m)
ReDim gamma_alt(m)
'berechnung von B
For i = 1 To m
bb(i) = b(i, i) + f(i)
Next i
Do
'hier laufen dann eine Menge an Brechungen ab, bis das GS konvergiert
'Bestimmung des Abbruchkriteriums
For i = 1 To m
If Abs(gamma(i) - gamma_alt(i)) < 0.00000000000001 Then Exit Do
Next i
For i = 1 To m
gamma_alt(i) = gamma(i)
Next i
n = n + 1
Loop
MsgBox "Anzahl der Iterationen: " & n, 0, "INFO"
zirkver = gamma
End Function