Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
264to268
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
264to268
264to268
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige