Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Neuberechnung einer Arbeitsmappe

Forumthread: Neuberechnung einer Arbeitsmappe

Neuberechnung einer Arbeitsmappe
10.06.2003 11:39:55
Martin
Hallo zusammen,
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

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Neuberechnung einer Arbeitsmappe
10.06.2003 11:49:42
Nike

Hi,
deine Funktion wird nicht neu mitberechnet.
Das passiert nur, wenn du Application.volatile
in deine Funktion übernimmst.
Da die Berechnung so lange dauert ist es wohl besser,
wenn du die Funktion in eine Prozedur (sub) umbaust, oder?

Bye

Nike

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige