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

Forumthread: Automatische Berechnung wirklich ausschalten?

Automatische Berechnung wirklich ausschalten?
07.01.2016 07:39:27
herman_the_german
Hallo,
am Anfang eines jeden Monats, soll eine Datei archiviert werden, da in dieser Datei "live" Berechnung stattfinden, soll die Datei beispielsweise am 01.01.16 natürlich nicht mit den neu berechneten Werte exportiert werden, sondern den Stand von 31.12.2016 aufweisen. Demzufolge habe ich beim Öffnen und zur Sicherheit noch einmal im Modul, die automatische Berechnung deaktiviert. Um das Ganze nun zu überprüfen, habe ich eine eine Zelle mit dem Format Uhrzeit die Formel =JETZT() geschrieben, um zu prüfen, ob er auch wirklich erst exportiert und dann berechnet. Was soll ich sagen, es funktioniert nicht. In der exportierten Datei steht immer genau die Zeit, vom Öffnen der Datei drin - was ja an sich nicht sein dürfte.
Kurze Codeaufbau:

Workbook_Open:
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
If Sheets("Blatt1").Range("A33").Value  Month(Now) Then
Call read
Else
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End If
End Sub

Modul
ub read()
Dim Datei As String
Dim pfad As String
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Datei = "Report"
pfad = "Netzwerkpfad" & "\"
ThisWorkbook.Sheets(Array("Blatt1", "Diagramm1", "Diagramm2", "Diagramm_3", "Diagramm4")).Copy
ActiveSheet.Range("A1:AG39").Cells = ActiveSheet.Range("A1:AG39").Cells.Value
ActiveWorkbook.SaveAs Filename:=pfad & Datei & Format(Now, "_YYYY_MM") & ".xlsx", _
FileFormat:=51, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close
If Sheets("Blatt1").Range("AG8").Value = Sheets("Blatt1").Range("B8").Value Then
Range("AG10:AG12").Select
Selection.Copy
Range("B10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("AG14:AG16").Select
Selection.Copy
Range("B14").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("AG22:AG24").Select
Selection.Copy
Range("B22").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Sheets("Blatt1").Range("AF8").Value = Sheets("Blatt1").Range("B8").Value Then
Range("AF10:AF12").Select
Selection.Copy
Range("B10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("AF14:AF16").Select
Selection.Copy
Range("B14").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("AF22:AF24").Select
Selection.Copy
Range("B22").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Sheets("Blatt1").Range("AE8").Value = Sheets("Blatt1").Range("B8").Value Then
Range("AE10:AE12").Select
Selection.Copy
Range("B10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("AE14:AE16").Select
Selection.Copy
Range("B14").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("AE22:AE24").Select
Selection.Copy
Range("B22").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Sheets("Blatt1").Range("AD8").Value = Sheets("Blatt1").Range("B8").Value Then
Range("AD10:AD12").Select
Selection.Copy
Range("B10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("AD14:AD16").Select
Selection.Copy
Range("B14").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("AD22:AD24").Select
Selection.Copy
Range("B22").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Wahrscheinlich geht die ganze Kopierprozedur auch weitaus schöner, es funktioniert aber. Die meines erachtens wichtigen Stellen zur Deaktivierung und Aktivierung der Berechnung habe ich entsprechend markiert.
Wie kann man also nun die automatische Berechnung wirklich deaktivieren und erst nach dem Export bzw. wenn die IF-Bedingung im Workbook_Open False zurückgibt aktivieren? Hat es vielleicht etwas damit zu tun, wie die Datei archiviert bzw. alles kopiert wird?
Danke im Voraus!

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatische Berechnung wirklich ausschalten?
07.01.2016 08:03:24
Luschi
Hallo herman_the_german,

Zitat:
beispielsweise am 01.01.16 natürlich nicht mit den neu berechneten Werte exportiert
werden, sondern den Stand von 31.12.2016 aufweisen
Dein Vorgesetzter sollte Dich zum Chef-Volkswirt der Firma befördern!
Gruß von Luschi
aus klein-Paris
PS: nix für Ungut - immer schön locker bleiben!

Anzeige
AW: Automatische Berechnung wirklich ausschalten?
07.01.2016 08:09:33
Sepp
Hallo Hermann,
nimm mal unter 'Optionen' > 'Formeln' > 'Berechnungsoptionen' den Haken bei 'Vor dem Speichern die Arbeitsmappe neu berechnen' raus.
Gruß Sepp

Anzeige
AW: Automatische Berechnung wirklich ausschalten?
07.01.2016 08:21:11
herman_the_german
Hallo,
danke für die Antworten! Ups, da hat sich wohl ein Tippfehler eingeschlichen :)
Das habe ich eben auch probiert. Die Option im VBA dafür heißt laut Makrorecorder:
Application.CalculateBeforeSave = False
Das habe ich jetzt im Code mit hinterlegt, funktioniert dennoch nicht.
Ist es überhaupt möglich, die automatische Berechnung beim Öffnen der Arbeitsmappe abzufangen? Mir kommt es bald so vor, als ob Excel standardmäßig vor dem Öffnen erst einmal alles berechnet was so geht und man das gar nicht abfangen kann - kann das sein?
Auch über ein Sub auto_open() habe ich es probiert, funktioniert auch nicht zuverlässig, alle 5-10 mal klappt es aber seltsamerweise mal...

Anzeige
AW: Automatische Berechnung wirklich ausschalten?
07.01.2016 08:36:00
Sepp
Hallo Hermann,
ich würde das Pferd anders aufzäumen. Warum speicherst du das Monats-Backup nicht beim beenden der Datei, dann enthält dieses immer den aktuellen Stand.
Gruß Sepp

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Automatische Berechnung in Excel ausschalten


Schritt-für-Schritt-Anleitung

Um die automatische Berechnung in Excel zu deaktivieren, kannst du folgende Schritte befolgen:

  1. Öffne Excel und die Arbeitsmappe, in der du die automatische Berechnung ausschalten möchtest.
  2. Gehe zu den Optionen:
    • Klicke auf Datei > Optionen.
    • Wähle im Menü links Formeln.
  3. Ändere die Berechnungsoptionen:
    • Setze den Haken bei Manuell unter Berechnungsoptionen.
    • Deaktiviere die Option Vor dem Speichern die Arbeitsmappe neu berechnen, indem du den Haken entfernst.
  4. Bestätige die Änderungen mit OK.

Für VBA-Nutzer gibt es auch die Möglichkeit, die Berechnung via Code zu steuern:

Application.Calculation = xlCalculationManual

Diese Zeile kannst du in das Workbook_Open()-Makro einfügen, um die Berechnung beim Öffnen der Datei auszuschalten. Vergiss nicht, die Berechnung nach dem Export der Daten wieder zu aktivieren:

Application.Calculation = xlCalculationAutomatic

Häufige Fehler und Lösungen

  • Excel berechnet nicht automatisch: Überprüfe, ob du die Berechnungsoptionen korrekt gesetzt hast. Manchmal kann es helfen, Excel neu zu starten.
  • VBA funktioniert nicht wie gewünscht: Stelle sicher, dass die Codezeilen in der richtigen Reihenfolge stehen. Wenn du die Berechnung im Workbook_Open() nicht richtig deaktivierst, wird sie möglicherweise trotzdem ausgeführt.
  • Automatische Berechnung wird trotz Einstellung nicht deaktiviert: Überprüfe, ob in den Excel-Optionen unter Formeln die richtige Berechnungsart ausgewählt ist.

Alternative Methoden

Falls die oben genannten Schritte nicht zum gewünschten Erfolg führen, probiere folgende Alternativen:

  • Verwende die Tastenkombination: Du kannst die automatische Berechnung temporär deaktivieren, indem du die Tastenkombination Alt + M, gefolgt von X drückst.
  • Speichere die Datei im richtigen Format: Manchmal kann das Format der Datei die Berechnungseinstellungen beeinflussen. Stelle sicher, dass du im .xlsx-Format speicherst.

Praktische Beispiele

  1. Archivierung von Monatsdaten: Wenn du am Ende eines Monats die Datei archivieren möchtest, trage im Workbook_Open()-Makro die Zeile Application.Calculation = xlCalculationManual ein, um sicherzustellen, dass die Berechnung nicht beim Öffnen erfolgt.

  2. Datenexport: Nutze den VBA-Code, um nur die Werte zu exportieren und die Berechnung erst danach zu aktivieren. Der folgende Code zeigt ein einfaches Beispiel:

Private Sub Workbook_Open()
    Application.Calculation = xlCalculationManual
    ' Datenexport hier durchführen
    Application.Calculation = xlCalculationAutomatic
End Sub

Tipps für Profis

  • Nutze VBA-Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um sicherzustellen, dass die Berechnungen immer wieder korrekt aktiviert werden, auch wenn das Makro fehlschlägt.
  • Einstellungen für einzelne Tabellenblätter: Du kannst die automatische Berechnung für bestimmte Tabellenblätter deaktivieren, indem du Application.Calculation nur für diese Blätter änderst.
  • Teste deine Einstellungen: Führe regelmäßig Tests durch, um sicherzustellen, dass die automatische Berechnung wie gewünscht deaktiviert bleibt.

FAQ: Häufige Fragen

1. Wie kann ich die automatische Berechnung für ein bestimmtes Tabellenblatt ausschalten?
Du kannst dies tun, indem du in deinem VBA-Code spezifisch für das gewünschte Blatt die Berechnungseinstellungen änderst.

2. Was mache ich, wenn Excel trotzdem automatisch berechnet?
Überprüfe die allgemeine Excel-Optionen und stelle sicher, dass keine anderen Makros oder Add-Ins die Berechnungseinstellungen überschreiben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige