In der Standardeinstellung des UDF ( User Defined Functions) in Excel VBA ist nicht flüchtig. Sie werden nur dann, wenn eine der Argumente der Funktion neu berechnet ändern. Eine veränderliche Funktion wird neu berechnet werden, wenn Berechnung in beliebigen Zellen in dem Arbeitsblatt auftritt. Lassen Sie uns einen Blick auf ein einfaches Beispiel nehmen dies ein wenig zu erklären.

  1. Öffnen Sie den Visual Basic-Editor und klicken Sie auf Einfügen, Modul.

Erstellen Sie eine Funktion namens myFunction, die die Summe der ausgewählten Zelle und die Zelle unterhalb dieser Zelle zurückgibt.

  1. Die folgenden Codezeilen hinzu:

Function MYFUNCTION(cell As Range)

MYFUNCTION = cell.Value + cell.Offset(1, 0).Value

End Function
  1. Nun können Sie diese Funktion verwenden, wie jede andere Excel-Funktion.

Non-volatile Function in Excel VBA

  1. Dies ist eine nichtflüchtige Funktion. Nichtflüchtige Funktionen werden nur dann, wenn eines der Argumente Änderung der Funktion neu berechnet. Ändern Sie den Wert der Zelle B2 bis 8.

Function’s Argument Changes

  1. Nun den Wert der Zelle B3 bis 11. ändern

Any Other Cell Changes

Erläuterung: die nichtflüchtige Funktion nicht neu berechnet, wenn eine andere Zelle auf dem Blatt ändert.

  1. Aktualisieren Sie die Funktion folgt, wie die Funktion flüchtig zu machen:

Function MYFUNCTION(cell As Range)

Application.Volatile

MYFUNCTION = cell.Value + cell.Offset(1, 0).Value

End Function
  1. Ändern Sie den Wert der Zelle B3 bis 12

Ergebnis:

Volatile Function in Excel VBA

Hinweis: Sie müssen die Funktion erneut eingeben, um flüchtig zu machen (oder aktualisieren, indem Sie den Cursor in der Bearbeitungsleiste platzieren und die Eingabetaste drücken).