Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Application.Volatile

Forumthread: Application.Volatile

Application.Volatile
05.06.2007 09:21:36
Peter
Guten Tag
Ich habe eine Funktion gefunden, die es ermöglicht, Werte bestimmter farbiger Zellen zu summieren.
Wenn ich die Frabe ändere, muss ich jeweils zuerst aktualisieren, damit die Berechnung aktualisiert wird (habe Berechnen auf automatisch eingestellt). Dabei dachte ich, dass dies nicht nötig sein, wenn in der Funktion "Application.Volatile" enthalten ist. Bin ich da falsch gewickelt?
Danke für eine Rückmeldung.
Peter

Function Farbsumme(Bereich As Range, Farbe As Integer)
Dim Zelle As Object
Application.Volatile
For Each Zelle In Bereich
If Zelle.Interior.ColorIndex = Farbe Then
Farbsumme = Farbsumme + Zelle
End If
Next
End 

Function

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Application.Volatile
05.06.2007 09:32:00
Matthias
Hallo Peter,
Bin ich da falsch gewickelt?
Ja, ein wenig. .Volatile sorgt für eine Neuberechnung bei Änderung von Zellen, die nicht direkt als Funktionsargument stehen:

Function tt(r As Range)
Application.Volatile
tt = WorksheetFunction.Sum(r) + Sheets(1).Range("A1")
End Function


Wenn du nun in eine Zelle schreibst: =TT(B2:B10)
wird durch .Volatile auch dann neu berechnet, wenn A1 geändert wird.
Aber Farb- bzw. Formatänderungen bewirken in keinem Fall eine Neuberechnung.
Gruß Matthias

Anzeige
AW: Application.Volatile
05.06.2007 09:58:00
Andi
Hi,
dass es so nicht geht, wenn nur die Farbe geändert wird, hat Matthias ja schon geschrieben; alternativ könntest Du zB die Neuberechnung im Workbook_SheetSelectionChange-Ereignis auslösen. Ist aber nur ratsam, wenn Du nicht viele umfangreiche Formeln in Deiner Mappe hast, sprich wenn die Berechnung keine Verzögerung bewirkt.
Schönen Gruß,
Andi

Anzeige
AW: Application.Volatile
05.06.2007 11:20:00
Peter
Vielen Dank für die Rückmeldungen
Werde mich mal mit dem Ereignis Code schlau machen.
Freundlicher Gruss, Peter
;
Anzeige

Infobox / Tutorial

Anwendung von Application.Volatile in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Erstelle eine neue Funktion in deinem VBA-Editor (Alt + F11) und füge den folgenden Code hinzu:

    Function Farbsumme(Bereich As Range, Farbe As Integer) As Double
        Dim Zelle As Range
        Application.Volatile
        For Each Zelle In Bereich
            If Zelle.Interior.ColorIndex = Farbe Then
                Farbsumme = Farbsumme + Zelle.Value
            End If
        Next Zelle
    End Function
  2. Nutze die Funktion in deiner Excel-Tabelle, indem du sie so eingibst: =Farbsumme(A1:A10, 3), wobei "3" der Farbindex ist.

  3. Aktualisiere die Berechnung manuell, wenn du die Farbe der Zellen änderst. Beachte, dass Application.Volatile nicht auf Farbänderungen reagiert.


Häufige Fehler und Lösungen

  • Fehler: Die Funktion aktualisiert sich nicht bei Farbänderungen.

    • Lösung: Das ist ein bekanntes Verhalten von Excel. Application.Volatile sorgt nur für Neuberechnungen, wenn sich Zellinhalte ändern, nicht jedoch bei Formatänderungen.
  • Fehler: Ein Typkonflikt bei der Verwendung der Funktion.

    • Lösung: Stelle sicher, dass der Bereich, den du übergibst, vom Typ Range ist und dass die Farbparameter korrekt sind.

Alternative Methoden

Wenn Application.Volatile nicht die gewünschten Ergebnisse liefert, kannst du die Neuberechnung durch Ereignisse auslösen:

  • Workbook_SheetSelectionChange: Erzeuge ein Ereignis, das die Berechnung auslöst, wenn eine Zelle ausgewählt wird. Hier ist ein Beispiel:

    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
        Application.Calculate
    End Sub

Diese Methode kann jedoch die Leistung beeinträchtigen, wenn viele komplexe Formeln vorhanden sind.


Praktische Beispiele

  1. Farbige Zellen summieren: Verwende die Funktion Farbsumme für einen Bereich in deiner Tabelle. Ändere die Farbe einer Zelle und aktualisiere die Berechnung manuell.

  2. Ereignisgesteuerte Neuberechnung: Setze das oben genannte Ereignis ein, um die Neuberechnung zu automatisieren, auch wenn die Farbe der Zellen geändert wird.


Tipps für Profis

  • Vermeide übermäßige Verwendung von Application.Volatile in großen Arbeitsmappen, da dies die Leistung beeinträchtigen kann.
  • Nutze Excel VBA volatile Funktionen nur, wenn nötig. Überlege, ob es effizientere Alternativen gibt.
  • Halte deine VBA-Module gut organisiert, um die Wartung zu erleichtern.

FAQ: Häufige Fragen

1. Was ist der Zweck von Application.Volatile?
Application.Volatile sorgt dafür, dass eine Funktion bei jeder Berechnung von Excel neu berechnet wird, auch wenn sich die Eingabewerte nicht geändert haben.

2. Warum funktioniert meine Funktion nicht bei Farbänderungen?
Farbänderungen lösen keine Neuberechnung aus, da Application.Volatile nur auf Zellinhalte reagiert, nicht auf Formatänderungen.

3. Gibt es eine Möglichkeit, die Berechnung bei Farbänderungen automatisch auszulösen?
Ja, du kannst Ereignisse wie Workbook_SheetSelectionChange verwenden, um die Neuberechnung manuell zu triggern, jedoch kann dies die Leistung beeinträchtigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige