Microsoft Excel

Herbers Excel/VBA-Archiv

Werte einer UDF werden nicht aktualisiert

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
  


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 !


  


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


  


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


  


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.


  


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


 

Beiträge aus den Excel-Beispielen zum Thema "Werte einer UDF werden nicht aktualisiert"