Automatisches Aktualisieren von VBA-Funktionen in Excel
Schritt-für-Schritt-Anleitung
Um sicherzustellen, dass Deine VBA-Funktion in Excel automatisch aktualisiert wird, befolge diese Schritte:
-
Überprüfe die Berechnungseinstellungen:
- Gehe zu
Extras
> Optionen
> Berechnung
.
- Stelle sicher, dass die Berechnung auf „Automatisch“ eingestellt ist.
-
Verwende die richtige Funktion:
-
Aktualisiere manuell:
- Wenn die automatische Aktualisierung nicht funktioniert, kannst Du
Strg
+ Alt
+ F9
nutzen, um alle Berechnungen in der Arbeitsmappe zu aktualisieren.
-
Makro zur Aktualisierung erstellen:
Häufige Fehler und Lösungen
-
Excel F9 funktioniert nicht: Wenn die Berechnungen sich nicht aktualisieren, überprüfe die Berechnungseinstellungen und teste Strg
+ Alt
+ F9
.
-
Excel Felder aktualisieren nicht automatisch: Stelle sicher, dass die Formeln nicht in einem Bereich mit einer anderen Berechnungseinstellung liegen.
-
Formel aktualisiert nicht automatisch: Achte darauf, dass Du die Funktion nicht rekursiv aufrufst, was zu langen Berechnungszeiten führen kann.
Alternative Methoden
-
VBA-Makro verwenden: Du kannst ein Makro aufzeichnen, das die erforderlichen Zellen mit Doppelklick aktualisiert. Das Aufzeichnen kannst Du folgendermaßen machen:
- Gehe zu
Entwicklertools
> Makro aufzeichnen
und führe die Doppelklick-Aktion aus.
-
Formeln in einer Tabelle nutzen: Manchmal kann es hilfreich sein, die Berechnung über eine Tabelle zu organisieren, um sicherzustellen, dass alle Formeln sich in einem dynamischen Bereich befinden.
Praktische Beispiele
Hier ist ein Beispiel, wie Du eine Funktion implementierst, die die Molmasse berechnet und dabei automatisch aktualisiert wird:
Function MolSumme(Tabellenblatt As String, Element As String) As Double
Dim cell As Range
Dim ipos As Integer
Dim myVal As Double
Dim ch As String
Dim Tmp As Double
Tmp = 0
For Each cell In Intersect(Worksheets(Tabellenblatt).UsedRange, Worksheets(Tabellenblatt).Range("A:A"))
ipos = InStr(cell.Value, Element)
While ipos > 0
If Len(Element) = 1 Then
ch = Mid(cell.Value, ipos + 1, 1)
ElseIf Len(Element) = 2 Then
ch = Mid(cell.Value, ipos + 2, 1)
End If
If ch Like "[a-z]" Then
myVal = 0
ElseIf ch Like "[0-9]" Then
myVal = Val(Mid(cell.Value, ipos + Len(Element)))
Else
myVal = 1
End If
Tmp = Tmp + myVal * cell.Offset(0, 6).Value
ipos = InStr(ipos + Len(Element), cell.Value, Element)
Wend
Next
MolSumme = Tmp
End Function
Tipps für Profis
-
Benutze temporäre Variablen: Wenn Du Berechnungen in einer Funktion durchführen möchtest, nutze temporäre Variablen, um die Effizienz zu erhöhen.
-
Aktualisierung optimieren: Verwende Application.ScreenUpdating = False
und Application.Calculation = xlCalculationManual
am Beginn Deines Makros, um die Geschwindigkeit zu erhöhen, und aktiviere beides wieder am Ende.
FAQ: Häufige Fragen
1. Warum werden meine Excel-Formeln nicht automatisch aktualisiert?
Überprüfe die Berechnungseinstellungen unter Extras
> Optionen
und stelle sicher, dass sie auf „Automatisch“ gesetzt sind.
2. Wie kann ich alle Zellen in Excel gleichzeitig aktualisieren?
Mit dem Shortcut Strg
+ Alt
+ F9
kannst Du alle Berechnungen in der Arbeitsmappe durchführen.
3. Was mache ich, wenn die Funktion in VBA sehr langsam ist?
Optimiere Deine Funktion, indem Du temporäre Variablen verwendest und vermeide rekursive Aufrufe, die die Berechnungszeit verlängern können.