Frage

Weiß jemand, wie ich eine benutzerdefinierte Funktion dazu bringen kann, sich selbst neu auszuwerten (basierend auf geänderten Daten in der Tabelle)?ich habe es versucht F9 Und Schicht+F9, aber die funktionieren nicht.Das Einzige, was zu funktionieren scheint, ist, die Zelle mit dem Funktionsaufruf zu bearbeiten und dann die Eingabetaste zu drücken.Irgendwelche Ideen?Ich scheine mich zu erinnern, dass ich das geschafft habe ...

War es hilfreich?

Lösung

Du solltest benutzen Application.Volatile oben in Ihrer Funktion:

Function doubleMe(d)
    Application.Volatile
    doubleMe = d * 2
End Function

Bei jeder Änderung der Arbeitsmappe wird die Berechnung dann neu ausgewertet (wenn Ihre Berechnung auf „Automatisch“ eingestellt ist).

Andere Tipps

Weitere Informationen zu den F9-Tastaturkürzeln für Berechnungen in Excel

  • F9 Berechnet alle Arbeitsblätter in allen geöffneten Arbeitsmappen neu
  • Schicht+ F9 Berechnet das aktive Arbeitsblatt neu
  • Strg+Alt+ F9 Berechnet alle Arbeitsblätter in allen geöffneten Arbeitsmappen neu (vollständige Neuberechnung)
  • Schicht + Strg+Alt+ F9 Erstellt den Abhängigkeitsbaum neu und führt eine vollständige Neuberechnung durch

Okay, das habe ich selbst gefunden.Sie können verwenden Strg+Alt+F9 um das zu erreichen.

Wenn Sie ALLE Verweise auf die Tabellendaten in die UDF-Parameterliste aufnehmen, berechnet Excel Ihre Funktion immer dann neu, wenn sich die referenzierten Daten ändern:

Public Function doubleMe(d As Variant)
    doubleMe = d * 2
End Function

Sie können auch verwenden Application.Volatile, Dies hat jedoch den Nachteil, dass Ihre UDF immer neu berechnet wird – auch wenn dies nicht erforderlich ist, da sich die referenzierten Daten nicht geändert haben.

Public Function doubleMe()
    Application.Volatile
    doubleMe = Worksheets("Fred").Range("A1") * 2
End Function

So wechseln Sie zu „Automatisch“:

Application.Calculation = xlCalculationAutomatic    

So wechseln Sie zu „Manuell“:

Application.Calculation = xlCalculationManual    

Der Application.Volatile funktioniert nicht für die Neuberechnung einer Formel mit meiner eigenen Funktion darin.Ich verwende folgende Funktion:Application.CalculateFull

Dadurch wird die Berechnung besser aktualisiert als Range(A:B).Calculate:

Public Sub UpdateMyFunctions()
    Dim myRange As Range
    Dim rng As Range

    ' Assume the functions are in this range A1:B10.
    Set myRange = ActiveSheet.Range("A1:B10")

    For Each rng In myRange
        rng.Formula = rng.Formula
    Next
End Sub
Public Sub UpdateMyFunctions()
    Dim myRange As Range
    Dim rng As Range

    'Considering The Functions are in Range A1:B10
    Set myRange = ActiveSheet.Range("A1:B10")

    For Each rng In myRange
        rng.Formula = rng.Formula
    Next
End Sub
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top