Bei komplexen Excel-Tabellen ist es oft nachteilig, wenn während des Schreibens von Daten in das Tabellenblatt die Datenberechnung aktiv ist. S-Verweise und andere Regeln werden mit jedem neuen Datensatz ausgeführt und verlangsamen den Generierungsprozess.
Excel bietet dafür an, die Formelberechnung einfach manuell zu deaktivieren:
Um die Berechnung vor der automatischen Tabellenbefüllung mit VBA Ein- und Auszuschalten, gibt es ein einfaches Kommando in VBA:
' Einschalten der Formelberechnung
Application.Calculation = xlCalculationAutomatic
' Ausschalten der Formelberechnung
Application.Calculation = xlCalculationManual
Und was, wenn das
Application.Calculation = xlCalculationManual
sich nicht auswirkt?
Bei mir zerhaut Excel alle Zellformeln, wenn ich auf xlCalculationManual geschaltet habe und das Arbeitsblatt der Daten ablösche. Als nächstes sollten da neue Daten geladen werden und danach die Zellformeln das mit
xlCalculationAutomatic
neu auswerten.
Wenn Du die Daten löschst, auf die sich die Formeln beziehen, dann fehlt den Formeln der Bezug. Das Beste wäre, Du würdest mit dem Power-Query-Editor eine feste Datenquelle wählen und diese dann als Bezugspunkt für Deine Formeln nehmen. Wenn Du die Daten in einer separaten Tabelle hast und diese vom Power-Query-Editor geladen wird, kannst Du bei Daten -> Aktualisieren immer die aktualisierte Datei nachladen ohne dass die Formeln darunter kaputt gehen.
Problem gelöst:
Das Problem entstand hier:
ActiveSheet.Cells.Delete ‚ do NOT do this!
Wenn die Zellen, die anderswo in Zellformeln verwendet werden gelöscht werden, kann Excel diese Zellformeln nicht mehr „berechnen“. (Auch wenn die automatische Berechnung zu dem Zeitpunkt mit Application.Calculation = xlCalculationManual aus geschalten ist.
Was funktioniert ist das hier:
Cells.Select
Selection.ClearContents
Damit werden die Inhalte der Zellen gelöscht. Die Zellformeln haben weiterhin einen korrekten Bezug. Jetzt können die Zellen mit neuen Werten befüllt werden. Bei Application.Calculation = xlCalculationAutomatic berechnen die Zellformeln dann mit den neuen Werten.
Danke für den Hinweis.
Super! Ich freue mich dass Du das gelöst hast. Danke für Dein Feedback!
Ich habe einen Effekt, den ich mir nicht erklären kann.
Mittels VBA trage ich in eine Zelle nachfolgende Formel ein:
= WENN(TEXT(N4; „T“) = „1“; TEXT(N4; „MMM“); „“)
Damit möchte ich in der Zelle N3 das Monatskürzel mit 3 Buchstaben eintragen lassen, wenn das Datum in Zelle N4 den Ersten eines Monats beinhaltet, nichts dagegen an allen anderen Tagen.
Unabhängig davon, ob ich die automatische Zellenberechnung aktiviert oder deaktiviert habe, erscheint in der Zelle N3 anstelle der erwarteten Formel die Meldung #NAME?, obwohl die Formel korrekt ist.
Sobald ich in der Zelle jedoch den Cursor ans Ende der Formel setze und die Eingabetaste betätige, erscheint das korrekte Ergebnis der Formel.
Wie lässt sich dieses Verhalten erklären oder – noch besser – lösen?