Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1236to1240
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

calculate auslösen

calculate auslösen
Jörg-HH
Hallo zusammen
ich muß im Code, der weitgehend ohne AutoBerechnung läuft, an einer Stelle eine Berechnung auslösen, weil es sonst Murks gibt. Das löse ich zZt etwas stümperhaft durch einmal Ein- und wieder Ausschalten der AutoBerechnung:
Application.Calculation = xlCalculationAutomatic
Application.Calculation = xlCalculationManual
Das verursacht dann gleich zweimal den Zeitbedarf, der für das Umschalten erforderlich ist (was sich bei meiner großen Datei deutlich bemerkbar macht)
Geht das vielleicht auch eleganter mit nur einem Befehl, so daß ich auch nur einmal den Zeitbedarf fürs Schalten habe?
Grüße - Jörg

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: calculate auslösen
11.11.2011 16:11:37
Beverly
Hi Jörg,
einfach: Calculate


AW: calculate auslösen
11.11.2011 16:13:00
hary
Hallo Joerg
Am Anfang ausschalten.
dann reicht:

Calculate

gruss hary
=WENN(JETZT()>0;"";"") und ActiveSheet.Calculate
11.11.2011 16:16:12
NoNet
Hallo Jörg,
füge in eine "versteckte" Zelle einfach folgende Funktion ein : =WENN(JETZT()>0;"";"")
Jetzt kannst Du per VBA die Berechnung durchführen : ActiveSheet.Calculate
Durch die Funktion in der "versteckten" Zelle werden folgende Ereignisse ausgelöst :
Private Sub Worksheet_Calculate() 'im Codemodul des Tabellenblattes
Private Sub Workbook_SheetCalculate(ByVal Sh As Object) 'Im Klassenmodul "DieseArbeitsmappe"
Gruß, NoNet
Anzeige
hmm...
11.11.2011 16:34:54
Jörg-HH
Hi NoNet
im ActiveSheet soll die Berechnung gar nicht stattfinden. Dort gibt es nur eine Stelle, an der ein Fehler auftritt, wenn nicht vorher in einem anderen Blatt was geradegebogen wird. Die kann ich durch calculate erreichen.
Was ist denn technisch der Unterschied zwischen deinem Vorschlag und den beiden anderen mit calculate ohne Zusätze?
Jörg
Ob Calculate oder ActiveSheet.Calculate ist egal
11.11.2011 16:54:32
NoNet
Hallo Jörg,
es spielt (fast) keine Rolle, ob Du Calculate (gesamte Arbeitsmappe) oder nur ActiveSheet.Calculate (also nur das aktuelle Blatt) verwendest. entscheidend ist allenfalls, ob das aktuelle Blatt überhaupt berechenbare Zellen (also Zellen mit Formeln/Funktionen/Bezüge) beinhaltet und/oder ob in den anderen Blättern evtl. umfangreiche und zeitraubende Berechnungen (z.B. grosse MATRIX-Funktionen) enthalten sind.
Ich hatte es so verstanden, dass das aktuelle Blatt keine berechenbaren Zellen beinaltet und daher das Ereignis "Worksheet_Calculate" gar nicht ausgelöst werden kann - daher auch der Tipp mit der (ansonsten überflüssigen) Funktion mit JETZT(), da diese immer aktuell berechnet wird (siehe "volatile Funktion").
Da in Deinem Fall die Berechnung auf einem "anderen Blatt" (z.B. "Tabelle2") durchgeführt werden soll, muss die Anweisung lauten : Sheets("Tabelle2").Calculate
Das bewirkt, dass das Ereignis "WorkSheet_Calculate()" im Klassenmodul "Tabelle2" ausgeführt wird, in dem Du die Veränderung auf dem aktuellen Blatt durchführen kannst, z.B. :
'Code in das Klassenmodul zu Tabelle2 - aktuelles Blatt ist z.B. "Tabelle1" :
Private Sub Worksheet_Calculate()
ActiveSheet.[A5] = "Geändert am : " & Format(Now, "DD.MM.YYYY hh:mm:ss")
End Sub
Ohne berechnete Zellen auf dem zu berechnenden Blatt wird das Makro übrigens NICHT ausgeführt !
Gruß, NoNet
Anzeige
Wenn du ohnehin mit KalkModus=manuell ...
11.11.2011 17:23:12
Luc:-?
…arbeitest, Jörg,
schlage ich dir vor, was ich in solchen Fällen mache:
1. KalkModus abfragen — davon …
2. abhängig machen, ob und was unbedingt neu berechnet wdn sollte und schließlich …
3. für diese Fälle ggf eine eigene Berechnungsproz schreiben, die die Bereiche eines Blattes in der notwendigen richtigen Reihenfolge berechnet, denn mit der Methode Calculate kann man auch einzelne Bereiche eines Blattes berechnen, was unschwer daran zu erkennen ist, dass der VBE-Intellisense und der VBE-Objekt-Manager sie auch als Methode des Range-Objekts ausweisen.
Gruß Luc :-?
Anzeige
...Stoff zum Nachdenken...
11.11.2011 18:19:49
Jörg-HH
Hallo zusammen
eure Antworten beantworten mir mehr, als ich überhauot gefragt hatte. Jetzt habe ich nämlich den Hinweis, wie ich meine lahme Riesendatei beschleunigen kann - und zwar indem ich dafür sorge, daß Berechnungen nur noch da stattfinden, wo sie nötig sind, und nicht mehr in allen 130 Blättern gleichzeitig :-) ... wird wohl viel Arbeit machen, das nachträglich einzubauen...
Danke für die Nachhilfe!
Jörg
Bitte seeehr! ;-) Gruß owT
11.11.2011 22:19:12
Luc:-?
:-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige