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

VBA: calculation automatic/manual

Forumthread: VBA: calculation automatic/manual

VBA: calculation automatic/manual
23.02.2005 18:36:43
Peter/Berlin
Hallo VBA-Wissende,
ich habe zwei Workbooks (A und B), die gleichzeitig geöffnet sind und miteinander arbeiten:
Während im Workbook A die Berechnungen mit 'manuell' eingestellt sein sollen, ist für Workbook B die Einstellung 'automatische' Berechnungen vorgesehen.
Da aber mit
Application.Calculation = xlCalculationManual/Automatic
alle geöffneten Workbooks gleichermassen eingestellt werden, ist eine einzelne Einstellung der Workbooks A und B (mir) nicht möglich.
Wie muss die Syntax lauten, um ein einzelnes zweier Workbooks einzustellen?
Gruss aus Berlin
Peter
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: calculation automatic/manual
ransi
hallo
bau dir doch eine schleife nach diesem schema.
das könnte gehn.
bei beiden dateien ins workbook_activate:
dim wkb as workbook
dim wks as worksheet
for each wks in thisworkbook
wks.enablecalculation=false
next
select case activeworkbook.name
case is ="A.xls"
for each wks in workbooks("B.xls)
wks.enablecalculation=false
next
case is ="B.xls"
for each wks in workbooks("A.xls)
wks.enablecalculation=false
next
end select
was besseres fällt mir dazu auch nicht ein.
ransi
Anzeige
;
Anzeige

Infobox / Tutorial

Automatische und manuelle Berechnung in Excel VBA einstellen


Schritt-für-Schritt-Anleitung

Um die Berechnungseinstellungen für unterschiedliche Workbooks in Excel VBA zu steuern, kannst du folgende Schritte befolgen:

  1. Öffne die VBA-Entwicklungsumgebung:

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

    • Klicke mit der rechten Maustaste auf VBAProject (DeinWorkbookName) und wähle Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Sub SetCalculationMode()
       Dim wkb As Workbook
       Dim wks As Worksheet
    
       ' Setze die Berechnung für Workbook A auf manuell
       Set wkb = Workbooks("A.xls")
       Application.Calculation = xlCalculationManual
    
       For Each wks In wkb.Worksheets
           wks.EnableCalculation = False
       Next wks
    
       ' Setze die Berechnung für Workbook B auf automatisch
       Set wkb = Workbooks("B.xls")
       Application.Calculation = xlCalculationAutomatic
    
       For Each wks In wkb.Worksheets
           wks.EnableCalculation = True
       Next wks
    End Sub
  4. Führe das Makro aus:

    • Wähle Run > Run Sub/UserForm oder drücke F5, um das Makro auszuführen.

Mit diesem Code wird die Berechnung für Workbook A auf manuell (xlCalculationManual) und für Workbook B auf automatisch (xlCalculationAutomatic) eingestellt.


Häufige Fehler und Lösungen

  • Fehler: "Das angegebene Workbook ist nicht geöffnet."

    • Lösung: Stelle sicher, dass beide Workbooks („A.xls“ und „B.xls“) tatsächlich geöffnet sind, bevor du das Skript ausführst.
  • Fehler: Berechnung wird nicht aktualisiert.

    • Lösung: Prüfe, ob du EnableCalculation für die entsprechenden Worksheets korrekt gesetzt hast.

Alternative Methoden

Wenn du die Berechnungseinstellungen nicht über VBA ändern möchtest, kannst du auch manuell die Berechnungsmethode in Excel einstellen:

  1. Gehe zu Datei > Optionen.
  2. Wähle Formeln.
  3. Unter Berechnungsoptionen, wähle Manuell oder Automatisch.

Das kann hilfreich sein, wenn du nur gelegentlich zwischen den Berechnungsmodi wechseln möchtest.


Praktische Beispiele

  • Beispiel: Automatische Berechnung für Report-Workbook: Wenn du regelmäßig Berichte in Workbook B generierst, könntest du diesen Code verwenden, um sicherzustellen, dass die Berechnung immer automatisch erfolgt, während andere Workbooks manuell bleiben.

  • Beispiel: Temporäre manuelle Berechnung für große Datenmengen: Wenn du große Datenmengen in Workbook A bearbeitest, kann es sinnvoll sein, die Berechnung während der Eingabe auf manuell zu setzen und erst zum Schluss auf automatisch umzustellen.


Tipps für Profis

  • Nutze Application.Calculate im Code, um die Berechnung manuell auszulösen, wenn du im manuellen Modus arbeitest.
  • Halte deine Workbooks sauber, indem du nicht benötigte Berechnungen deaktivierst, um die Leistung zu verbessern.
  • Experimentiere mit der Einstellung Application.Calculation = xlManual und Application.Calculation = xlAutomatic, um die für deine Arbeit am besten geeignete Methode zu finden.

FAQ: Häufige Fragen

1. Wie stelle ich die Berechnung für alle geöffneten Workbooks gleichzeitig ein? Um die Berechnung für alle geöffneten Workbooks gleichzeitig einzustellen, verwende den Befehl Application.Calculation = xlCalculationAutomatic oder Application.Calculation = xlCalculationManual. Beachte jedoch, dass dies die Berechnungseinstellungen für alle Workbooks betrifft.

2. Kann ich die Berechnung für bestimmte Worksheets in einem Workbook einstellen? Ja, du kannst die Berechnung für bestimmte Worksheets in einem Workbook einstellen, indem du wks.EnableCalculation auf True oder False setzt, je nachdem, ob du die Berechnung aktivieren oder deaktivieren möchtest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige