Excel-VBA-warten-Anwendung.calculatefull

wenn ich Anruf-Anwendung.calculatefull und setzen einen breakpoint an die nächste Anweisung, und ich sehe in der status-bar, dass der Prozessor die Verarbeitung nach einer Weile aber schon die nächste Zeile von code.

Ich habe das forum und die Leute vorgeschlagen, die Verwendung von DoEvents. In meinem Fall ein problem. Als das Arbeitsblatt hat viele Formel und einige von Ihnen zeigen Falsches Ergebnis nach dem ersten Lauf, obwohl die Formel korrekt ist, also, wenn ich rufen Sie die calculateFull für das Arbeitsblatt, korrigiert er es aber nicht abwarten

Wenn ich DOEvents, die CalculateFull nicht aktualisieren Sie das Arbeitsblatt.

So, ich bin in einer Verlegenheit.

Bitte um Rat wie kann ich warten, bis der Prozessor für die komplette Abwicklung auf Anfrage.CalculationFull und nach, dass nur " gehe zu Nächster Zeile code.

Ich verwendet Anwendung.warte auch, aber es scheint zu halten, den Prozessor und einmal veröffentlicht, es beginnt die Berechnung dann, die nicht mein problem lösen.


waittime (1000)
SendKeys "+^%{F9}", True
Application.CalculateFullRebuild

Dies ist der code, den ich jetzt nutzen. Wenn ich den breakpoint an die nächste Zeile des Codes sehe ich, dass die application.calculatefullRebuild dauert ein paar Sek. und geht die nächste Zeile und wenn ich das activesheet nun, in weiteren 2-3 sec sehe ich in der status bar Berechnung (4 Prozessoren):xx% und nach dem der worksheet-Werten geändert, um die richtigen Werte

Dies ist mein Problem. Wenn Application.CalculateFullRebuild abgeschlossen und geht zu der nächsten Zeile, mein Arbeitsblatt Ergebnisse sind immer noch nicht korrekt und erst nach ein paar Sekunden die Prozessoren, die die Berechnung der statusbar Meldung, das Arbeitsblatt wird aktualisiert.

Wie kann ich warten, ansonsten ist der restliche code Holen falschen Ergebnissen.

  • könntest du vielleicht ein Bild angeben, was passiert, oder etwas anderes, damit wir sehen können was du meinst
  • AFAIK .CalculateFull ist nicht async, so dass mit einer single-threaded Umgebung wie VBA ist es sehr unwahrscheinlich, dass der code springt in die nächste Zeile ohne Abschluss Berechnung :/ seltsam zumindest
  • Hat deine Arbeitsmappe verwenden von asynchronen Funktionen? Und warum haben Sie verwenden, um CalculateFull statt Berechnen?
  • Wartezeit (1000) SendKeys "+^%{F9}", True Application.CalculateFullRebuild Anwendung.calculatefullRebuild dauert ein paar Sek. und geht die nächste Zeile und wenn ich das activesheet nun, in weiteren 2-3 sec sehe ich in der status bar Berechnung (4 Prozessoren):xx% und nach dem der worksheet-Werten geändert, um die richtigen Werte haben. Wenn Die Anwendung.CalculateFullRebuild abgeschlossen und geht zu der nächsten Zeile, Arbeitsblatt Ergebnisse sind immer noch nicht korrekt und erst nach ein paar Sekunden die Prozessoren, die die Berechnung der statusbar Meldung, das Arbeitsblatt wird aktualisiert. Wie man dieses Problem beheben
  • - Anwendung.Berechnen funktioniert, aber die Ergebnisse in einem Arbeitsblatt, das viele Formel nicht die richtigen Ergebnisse, und dann erneut Anwendung wieder aufzubauen hilft, um den Wert zu korrigieren, aber makro ist nicht warten, bis der Vorgang abgeschlossen ist, und gehen zur nächsten Zeile
  • Hat deine Arbeitsmappe verwenden Sie Arbeitsblatt-Funktionen, die nicht native-Excel-Funktionen? Wenn ja, was sind Sie?

InformationsquelleAutor chandanrs | 2014-10-14
Schreibe einen Kommentar