Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1464to1468
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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!

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!

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

185 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige