Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Calculate aktivieren/deaktivieren

Forumthread: Calculate aktivieren/deaktivieren

Calculate aktivieren/deaktivieren
27.11.2002 11:30:38
Kirsten
Hallo Leute,

muss mal als VBA-Laie noch eine dumme Frage stellen:

Kann ich evtl. verhindern, dass bei jeder Aktion in meiner Arbeitsmappe immer alles sofort berechnet wird?

Ich würde gerne die Kalkulationen auf bestimmte Ereignisse in den jeweiligen Tabellenblättern beschränken. So dass z.B. bei Aktivierung eines Tabellenblattes auch nur die darin enthaltenen Formeln berechnet bzw. die zu diesem Blatt gehörenden Makros ausgeführt werden.

Hat vielleicht mal jemand von euch einen Ansatz für mich?


Gruss
Kirsten

Anzeige

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Calculate aktivieren/deaktivieren
27.11.2002 11:32:44
Frederik Fuhrmann
Hallo Kirsten!

Nehme unter Extras, Optionen, Berechnung den Haken bei "automatisch neu berechnen" raus!

Gruß
F.

Re: Calculate aktivieren/deaktivieren
27.11.2002 11:35:42
James Bond -007-
Schalte doch einfach mal unter "Extras" - "Optionen" - Register "Berechnen" das Feld "automatisch Berechnen" ab und setzte es auf manuelle Berechnung, dann wird nicht alles gleich
berechnet.

Let´s have a lot of fun, but don´t shot me with your gun...

Anzeige
Re: Calculate aktivieren/deaktivieren
27.11.2002 11:37:13
Kirsten
Hi Frederik,

genau das mache ich auch im Augenblick. Allerdings sollen ja in den jeweils aktiven Tabellenblättern die Berechnungen automatisch durchgeführt werden.

Da aber mittlerweile die Datei durch unendliche viele Formeln und Makros extrem langsam geworden ist, hoffe ich so meinem Problem zu Leibe rücken zu können.

Gruss
Kirsten

Anzeige
Re: Calculate aktivieren/deaktivieren
27.11.2002 11:38:43
Kirsten
Hi 007,

habe gerade versucht, Frederik mein Problem zu schildern.


Kirsten

Re: Calculate aktivieren/deaktivieren
27.11.2002 11:40:28
Klaus Kunkle
Hallo Kirsten,
ich würde zuerst via Makrorekorder ein Makro "Neuberechungaus" aufzeichnen und dann an eine Schaltfläche zuweisen. Dann kann man bei Bedarf neuberechnen lassen. Eine weitere Möglichkeit wäre die Zuweisung an Change, die dann aber definiert werden muss (= bei welchem Ereignis soll neuberechnet werden").
Gruss
Klaus

Anzeige
Re: Calculate aktivieren/deaktivieren
27.11.2002 11:41:43
Frederik Fuhrmann
Hallo!

Setzte es doch nur vor Start des Makros um:

With Application
.Calculation = xlManual
.MaxChange = 0.001
End With
ActiveWorkbook.PrecisionAsDisplayed = False

Gruß
F.

Re: Calculate aktivieren/deaktivieren
27.11.2002 11:42:15
andre
... und das ganze aufgezeichnet ergibt den code für workbook_open

Application.Calculation = xlCalculationManual

im makro workbook_sheetchange dann

application.calculate

und hinterher in workbook_beforeclose wieder auf

xlCalculationAutomatic setzen

gruss andre

Anzeige
Re: Calculate aktivieren/deaktivieren
27.11.2002 11:43:38
andre
... statt sheetchange auch sheetactivate, und hier den gewünschten Blattname prüfen.
gruss andre
Re: Calculate aktivieren/deaktivieren
27.11.2002 11:44:06
Kirsten
Hi Klaus,

über eine Schaltfläche hatte ich auch schon nachgedacht, aber dann wird ja trotzdem wieder die ganze Mappe neu berechnet. Und es dauert und dauert und dauert.

Darum dachte ich ja, dass man vielleicht die Berechnung des Tabellenblatts über Worksheet_activate steuern könnte.


Gruss
Kirsten

Anzeige
Re: Calculate aktivieren/deaktivieren
27.11.2002 11:47:12
Kirsten
Hi Andre,

ich glaub, das isses!

Probier ich sofort aus. Drück die Daumen!
Melde mich dann gleich wieder.


Gruss
Kirsten

Re: Calculate aktivieren/deaktivieren
27.11.2002 11:59:38
kirsten
Wie, was, wo?

Bitte, hab doch kaum Ahnung von VBA.

Wenn ich jetzt z.B. in einem Tabellenblatt das Makro
....

habe, einfach nur die With-Anweisung dazwischensetzen?

Und was bewirkt

ActiveWorkbook.PrecisionAsDisplayed = False ????


Kirsten

Anzeige
Re: Calculate aktivieren/deaktivieren
27.11.2002 14:17:47
Udo RiHü
Hallo Kirsten,
hasst dich dein Chef? Wie es aussieht nimmt deine Mappe langsam galaktische Dimensionen an. Eine Mappe auf alle möglichen Ereignisse reagieren zu lassen frisst natürlich einen Haufen Performance.
Aber zu deiner Frage.
Du kannst die automatische Berechnung natürlich abschalten.

Private Sub Workbook_aktivate()
Application.Calculation=xlManual
End Sub

Beim Deaktivieren der Mappe solltest du das aber wieder einschalten, damit andere Mappen automatisch berechnet werden.

Private Sub Workbook_deaktivate()
Application.calculation=xlautomatic
End Sub

Du kannst auch nur einzelne Sheets neu berechnen lassen. Bau einfach in dein Makro am Ende die Zeile

ActiveSheet.Calculate

ein. Dann wird das Blatt nach einem Makro-Durchlauf neu berechnet. Auch einzelne Zeilen oder andere Bereiche gehen. in einer Worksheet_Change-Prozedur z.B.

Activesheet.Rows(target.Row).Calculate

berechnet die Zeile der geänderten Zelle neu.
Ich hoffe, ich konnte dir ein bisschen helfen.

Gruss Udo

Anzeige
Re: Calculate aktivieren/deaktivieren
27.11.2002 14:23:47
Kirsten
Hi Udo!

Ich glaube du hast recht mit meinem Chef ;-)
Habe mittlerweile auch schon Alpträume, da er sich ständig was neues einfallen lässt.

Auf jeden Fall hast Du mir sehr geholfen.
Fange gleich mal an zu basteln.


Bis später dann...

Kirsten

Re: Calculate aktivieren/deaktivieren
27.11.2002 15:02:56
Kirsten
Ich dreh jetzt wirklich bald durch.

Du hast doch alles so gut beschrieben. Und schon wieder ein Laufzeitfehler.

Lasse bereits einige Anweisung durch Workbook_open ausführen (z.B. Aktualisierung des Datums etc.) und habe jetzt - so wie du geschrieben hast - einfach in die letzte Zeile (vor End Sub) den Befehl Application.Calculation=xlManual eingefügt.

Ich bin davon ausgegangen, dass jetzt beim Öffnen der Mappe meine alten Anweisungen ausgeführt werden und anschließend die Berechnung auf manuell gesetzt wird. Und schwups ... Laufzeitfehler 424! Was hat das denn jetzt schon wieder zu bedeuten.

Meine Nerven liegen mittlerweile echt blank. Irgendwie klappt gar nichts mehr.

Gruss
Kirsten

Anzeige
Re: Calculate aktivieren/deaktivieren
27.11.2002 16:17:48
Udo RiHü
Hallo Kirsten,
das kann ich aus der Ferne auch nicht beurteilen. Hast du mal versucht, die Open-Prozedur im Editor mit F8 durchzugehen? Dann weisst du wenigstens wo genau es hakt bzw. kannst den ein oder anderen Variablen-Inhalt prüfen.

Gruss Udo

Re: Calculate aktivieren/deaktivieren
27.11.2002 16:41:11
Kirsten
Hi Udo,

es hakt genau an der Stelle Application.Calculation=xlManual.

Das verstehe ich ja gerade nicht?


Gruss
Kirsten

Anzeige
Re: Calculate aktivieren/deaktivieren
27.11.2002 17:38:00
andre
hallo kirsten,
schaue noch mal in meine antwort oder schneller:
Application.Calculation = xlCalculationManual

gruss andre

Re: Calculate aktivieren/deaktivieren
27.11.2002 17:44:23
Kirsten
Hi Andre,

lieben Dank noch mal. Hatte ich nur Tomaten auf den Augen?!?
Funktioniert aber einwandfrei!!!

Zwischenzeitlich habe ich mir damit beholfen, das funktionierte dann auch:

With ActiveSheet
.Application.Calculation = xlAutomatic
End With

Ich denke das ist das gleiche, oder?


Gruss
Kirsten

Anzeige
Re: Calculate aktivieren/deaktivieren
27.11.2002 18:01:43
andre
... musst bloß aufpassen - automatic oder manual.
das xlCalculation muss aber in beiden fällen dazu - wer weiss was da passiert ist.

aus der Hilfe zu calculation:
Application-Objekt: Gibt die Berechnungsart zurück oder legt sie fest. Kann eine der folgenden XlCalculation-Konstanten sein: xlCalculationAutomatic, xlCalculationManual oder xlCalculationSemiautomatic.

gruss andre

Anzeige
Re: Calculate aktivieren/deaktivieren
28.11.2002 11:18:08
Kirsten
...alles klar! Hab ich mir jetzt gemerkt.

Nochmals Danke.


Bis dann
Kirsten

;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Excel VBA: Berechnung aktivieren und deaktivieren


Schritt-für-Schritt-Anleitung

Um die Berechnung in Excel VBA zu steuern, kannst Du die Berechnungseinstellungen anpassen. Hier sind die Schritte:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf „VBAProject (DeineArbeitsmappe)“, wähle „Einfügen“ und dann „Modul“.
  3. Füge den folgenden Code ein:

    Sub BerechnungSteuern()
       ' Setze die Berechnung auf manuell
       Application.Calculation = xlManual
    
       ' Führe Deine Berechnungen durch
       ' ...
    
       ' Aktiviere die Berechnung für das aktive Blatt
       ActiveSheet.Calculate
    
       ' Setze die Berechnung wieder auf automatisch
       Application.Calculation = xlAutomatic
    End Sub
  4. Führe das Makro aus:

    • Du kannst das Makro nun über das Menü „Makros“ oder eine Schaltfläche ausführen.

Mit diesem Code kannst Du die automatische Berechnung ausschalten und nur bei Bedarf aktivieren, was die Performance Deiner Excel-Datei verbessern kann.


Häufige Fehler und Lösungen

Fehler 1: Laufzeitfehler 424

  • Ursache: Dieser Fehler tritt häufig auf, wenn Du versuchst, auf ein Objekt zuzugreifen, das nicht existiert.
  • Lösung: Stelle sicher, dass die Syntax korrekt ist und alle verwendeten Objekte existieren.

Fehler 2: Berechnung erfolgt nicht

  • Ursache: Wenn die Berechnungseinstellungen nicht korrekt gesetzt sind.
  • Lösung: Überprüfe, ob Application.Calculation richtig eingestellt ist. Nutze xlManual oder xlAutomatic, je nach Bedarf.

Alternative Methoden

Es gibt verschiedene Ansätze, die Berechnung in Excel VBA zu steuern:

  1. Ereignisgesteuerte Berechnung:

    • Du kannst die Berechnung an bestimmte Ereignisse binden, wie z.B. Worksheet_Activate. Beispiel:
      Private Sub Worksheet_Activate()
      Application.Calculation = xlAutomatic
      End Sub
  2. Manuelles Steuern über Schaltflächen:

    • Füge eine Schaltfläche hinzu und weise ihr ein Makro zu, das die Berechnung steuert. Dies ermöglicht eine gezielte Berechnung.

Praktische Beispiele

  1. Manuelles Berechnen eines spezifischen Bereichs:

    Sub BerechneBereich()
       Range("A1:A10").Calculate
    End Sub
  2. Deaktivieren der automatischen Berechnung beim Öffnen der Arbeitsmappe:

    Private Sub Workbook_Open()
       Application.Calculation = xlCalculationManual
    End Sub
  3. Aktiviere automatische Berechnung beim Schließen der Arbeitsmappe:

    Private Sub Workbook_BeforeClose()
       Application.Calculation = xlCalculationAutomatic
    End Sub

Tipps für Profis

  • Verwende Application.Calculate: Wenn Du nur bestimmte Bereiche oder Blätter neu berechnen möchtest, kann dies die Leistung erheblich verbessern.

  • MaxChange optimieren: Setze die MaxChange-Eigenschaft, um eine genauere Berechnung während der manuellen Berechnung zu gewährleisten:

    Application.MaxChange = 0.001
  • Debugging: Nutze die F8-Taste im VBA-Editor, um den Code Schritt für Schritt auszuführen und Fehler leichter zu finden.


FAQ: Häufige Fragen

1. Wie kann ich die Berechnung für ein spezifisches Blatt aktivieren? Um nur die Berechnung für ein spezifisches Blatt zu aktivieren, nutze ActiveSheet.Calculate nach Anpassung der Application.Calculation.

2. Was bewirkt Application.PrecisionAsDisplayed = False? Diese Einstellung beeinflusst, wie Excel die Genauigkeit der Berechnungen behandelt. Wenn sie auf False gesetzt ist, werden Berechnungen basierend auf den angezeigten Werten durchgeführt, was die Leistung verbessern kann.

3. Kann ich den Berechnungsmodus während eines Makros ändern? Ja, Du kannst den Berechnungsmodus jederzeit innerhalb Deines Makros ändern, indem Du Application.Calculation entsprechend anpasst.

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