Berechnungen in Zellen aktualisieren (eigene functions)

04/05/2009 - 00:24 von Thomas Hoffmann | Report spam
moin,

habe in einer Tabellenzeile immer gleich werte wie:
Zeit,KM usw., die eingeben werden. weiter rechts stehen dann in den Zellen Formeln wie
=durchschnitt(zeile()).
'durchschnitt' ist eine selbstgeschriebene function in einem MOdul. (Berechnung steht auf
automatisch)
Wenn ich die Formeln in den 'rechten' Zellen alle durch 'Markierung erweitern' und STRG+U
in eine freie Zeile drunter ziehe und dann in den 'linken' Zellen manuell meine Werte
eingebe, so werden die Zellen mit den Formeln nicht automatisch aktualisiert.
Woran liegt das denn?
Trage ich erst 'links' die WErte ein und zieh dann die Formeln mit strg+U runter, werden
die Zellen berechnet.
Hab auch schon versucht mit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rr As Range
Set rr = Range(Cells(Target.Row, 7), Cells(Target.Row, 13))
rr.Calculate
End Sub

Die Formelspalten 7 bis 13 zur Neuberechnung zu zwingen, wenn 'links' was
eingegeben/geàndert wurde, aber da tut sich auch nix.

Woran liegt das denn?
Wie kann ich per code diese Neuberechnung erreichen?

Gruß und Dank!
TH


Thomas Hoffmann
 

Lesen sie die antworten

#1 Thomas Ramel
04/05/2009 - 05:32 | Warnen spam
Grüezi Thomas

Thomas Hoffmann schrieb am 04.05.2009

Zeit,KM usw., die eingeben werden. weiter rechts stehen dann in den Zellen Formeln wie
=durchschnitt(zeile()).
'durchschnitt' ist eine selbstgeschriebene function in einem MOdul. (Berechnung steht auf
automatisch)



...und wie lautet der Code deiner Funktion...?

Wenn ich die Formeln in den 'rechten' Zellen alle durch 'Markierung erweitern' und STRG+U
in eine freie Zeile drunter ziehe und dann in den 'linken' Zellen manuell meine Werte
eingebe, so werden die Zellen mit den Formeln nicht automatisch aktualisiert.
Woran liegt das denn?



Daran wie Du die Funktion geschrieben hast und diese ihre
Berechnungs-Parameter übergeben bekommt.

Trage ich erst 'links' die WErte ein und zieh dann die Formeln mit strg+U runter, werden
die Zellen berechnet.
Hab auch schon versucht mit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rr As Range
Set rr = Range(Cells(Target.Row, 7), Cells(Target.Row, 13))
rr.Calculate
End Sub



Das ist IMO nur Symptombekàmpfung und löst dein Problem nicht wirklich.

Woran liegt das denn?
Wie kann ich per code diese Neuberechnung erreichen?



...indem Du deine Funktion korrekt schreibst... ;-)

Den wichtigsten Teil zur erfolgreichen Lösung deiner Frage hast Du leider
'unterschlagen', den Code deiner Funktion nàmlich.

Grundsàtzlich daher soviel:
Du musst den Bereich auf den sich die Funktion bezieht sauber als Parameter
übergeben und darfst sich innerhalb der Funktion auf *keine* Zellen
ausserhalb dieses übergebenen Bereiches beziehen.
Dann klappt das mit der Aktualisierung und Neuberchnung korrekt.


Mit freundlichen Grüssen
Thomas Ramel

- MVP für Microsoft-Excel -
[Vista Ultimate SP-1 / xl2007 SP-1]

Ähnliche fragen