Herbers Excel-Forum - das Archiv

Werte einer UDF werden nicht aktualisiert

Bild

Betrifft: Werte einer UDF werden nicht aktualisiert
von: Jakob

Geschrieben am: 14.08.2006 11:11:02
Servus allerseits,
Ich habe folgendes Problem:
Ich habe folgende UDF geschrieben, die die absoluten Werte eines Bereichs berechnet, und dabei Formeln auslässt.
Function SummeAbs(rng As Range) As Double
Dim c As Range, iSum As Double
iSum = 0
For Each c In rng
If Not c.HasFormula Then
iSum = iSum + c
End If
Next c
SummeAbs = iSum
End Function

Das Problem ist, dass immer wenn ich durch den Autofilter die Tabelle verändere, die Formel nur noch #WERT ausgibt und sich nicht automatisch neu berechnet. Wenn ich sie allerdings erneut eingebe und mit Enter bestätige, funktioniert sie. Wie kann ich das ändern?
Vielen Dank für Hilfe!
Gruß Jakob
Bild

Betrifft: AW: Werte einer UDF werden nicht aktualisiert
von: Heiko S.

Geschrieben am: 14.08.2006 11:35:36
Hallo Jakob,
versuche es mal so:
Function SummeAbs(rng As Range) As Double
Application.Volatile  ' Schau auch mal in die VBA Hilfe zu Volatile
Dim c As Range, iSum As Double
iSum = 0
For Each c In rng
If Not c.HasFormula Then
iSum = iSum + c
End If
Next c
SummeAbs = iSum
End Function

Gruß Heiko
PS: Rückmeldung wäre nett !
Bild

Betrifft: RE: Werte einer UDF werden nicht aktualisiert
von: Jakob

Geschrieben am: 14.08.2006 12:10:52
Danke für den Tip, Heiko.
Funktioniert insoweit, dass zumindest wenn auf dem Blatt eine Formel neu berechnet wird, auch meine UDF neu berechnet wird.
Beim Filtern allerdings tut sich nix. Da ich aber bestimmte Filter mit Buttons ausführe, kann ich in jedes Filter-Makro noch eine Formel (=1+1 oder so) reinpacken, die irgendwo auf dem Sheet berechnet wird. Dann müsste es gehen.
Danke auf jeden Fall.
Gruß Jakob
Bild

Betrifft: AW: RE: Werte einer UDF werden nicht aktualisiert
von: Daniel Eisert

Geschrieben am: 14.08.2006 16:13:09
Hallo
das liegt daran, daß es die UDF so wie sie geschrieben ist, nicht interessiert, ob eine Zelle ausgeblendet ist oder nicht.
(ähnlich wie bei SUMME, die wird auch über alle Zellen gebildet, wenn du die Ausgebelendeten aus der Berechung ausnehmen willst, muß du TEILERGEBNIS verwenden.)
um diese Funktionalität zu erhalten, mußt du den Code wiefolgt ergänzen:
streiche: If Not c.HasFormula Then
setze: If Not (c.HasFormula Or c.EntireRow.Hidden) Then
dann sollte es funktionieren.
bei Autofilter wird automatisch eine Neuberechung ausgelöst, eine Zusätzliche Aktion ist dazu nicht nötig.
Gruß, Daniel
Bild

Betrifft: AW: RE: Werte einer UDF werden nicht aktualisiert
von: Jakob

Geschrieben am: 16.08.2006 14:03:04
Danke, Daniel!
Deine Code-Ergänzung habe ich sinngemäß auch schon versucht, aber die Klammern nicht gesetzt und dann gings nicht. So ist es jetzt perfekt.
Teilergebnis funktioniert nicht, da ich auch Werte (Absolutwerte) die evtl. ausgeblendet sind summieren will. Das ist aber bei Teilergebnis nicht möglich.
Also nochmals Danke.
Bild

Betrifft: AW: Werte einer UDF werden nicht aktualisiert
von: Daniel Eisert

Geschrieben am: 14.08.2006 17:01:13
Hallo
wenn ich mir dein Problem so anschaue sieht es so aus, als hättest du eine Tabelle mit Zwischenwerten, die du bei der Aufsummierung zum Gesamtwert natürlich ignorien mußt.
Auch der Wunsch, Ausgeblendete Zellen für die Berechnung zu ignorieren, spricht dafür.
Sollte dies der Fall sein, könntest du auch die Funktion Teilergebnis(9;A1:A100) verwenden.
Diese Funktion erfüllt dann genau das was du suchst:
- Ausgeblendete Zellen werden ignoriert
- Steht innerhalb des angegebnen Ranges ein weiteres Teilergebnis, wird dieses ebenfalls nicht mit summiert.
Gruß, Daniel
 Bild
Excel-Beispiele zum Thema "Werte einer UDF werden nicht aktualisiert"
CommandButtons sollen auf Schaltflächen-Klick deaktiviert werden Hyperlinks sollen mit Quell- und Zieladresse gelistet werden
Labelwerte werden beim Verlassen einer TextBox berechnet Details von Verknüpfungen sollen aufgelistet werden
Werte aus Tabellenblatt-TextBoxes sollen addiert werden Anzeige, wenn Listenwerte gefunden werden
Zwischen zwei UserForms wechseln, wobei sich die 1. Aktualisiert Bei Eintragung UserForm mit aktualisierten Werten anzeigen