Tag Archives: ScreenUpdating

Ich bin ne Raupe / du bist ein Reh. / Ich werde ein Schmetterling, / und du wirst Filet.

Per Programmierung öffne ich eine andere Datei:

Workbooks.Open "D:\Bilanz.xlsm"

Ich möchte nicht, dass der Anwender dies sieht. Also verwende ich vor dem Öffnen den Befehl

Application.ScreenUpdating = False

Ich führe einige rechenintensive Operationen durch, die einige Sekunden (Minuten?) in Anspruch nehmen:

For i = 1 To 1000000
    strInhalt = ActiveSheet.Cells(i, 1).Value
Next i

Damit der Anwender sieht, dass etwas passiert, schreibe ich einen Text in die Statuszeile:

Application.StatusBar = "Excel nervt! - Bitte warten Sie ...    "

Was sieht man? Richtig: Gar nichts! Weil ich zuvor die Bildschirmaktualisierung ausgeschaltet habe. Zum Glück gibt es den Befehl

DoEvents

Damit klappt es wieder!

Bei mir ist wieder FKK-Zeit: Früh dunkel, Kalte Hände, Kalte Füße

Auch dieses Problem hat mich eine Stunde Zeit gekostet.

Ich erstelle ein umfangreiches Programm für einen Kunden. Die Registerkarten sind ausgeblendet:

Ich starte das Programm mit dem Ausschalten der Bildschirmaktualisierung:

Application.ScreenUpdating = False

Ich blende die Registerkarten per VBA wieder ein:

ActiveWindow.DisplayWorkbookTabs = True

Was passiert? Nichts!

Man muss vor dem Anzeigen die Bildschirmaktualisierung wieder einschalten! ( Application.ScreenUpdating = True). Dann erst werden die Tabs wieder angezeigt:

Übrigens: Es ist erstaunlich, dass die Eigenschaft „DisplayWorkbookTabs“ eine Eigenschaft von ActiveWindow und nicht von ActiveWorkbook ist!

Vorhersagen sind immer schwierig — vor allem über die Zukunft.

Wisst ihr wie ich das gemacht habe? Nein – das Bild ist nicht bearbeitet! Heute beim Programmieren habe ich erstaunt festgestellt, dass in einer Zelle anderer Text steht als in der Bearbeitungsleiste.

Nun – ein paar Zeilen Code:

Range(„E1“).Value = „Nervt Excel?“
Application.ScreenUpdating = True
[Hier muss Code stehen, der einige Sekunden benötigt, um ausgeführt zu werden]
Application.ScreenUpdating = False
Range(„E1“).Value = „Excel nervt!“
Die Zeile

Application.ScreenUpdating = True

bewirkt die Anzeige der „Sanduhr“ und bewirkt, dass nur nur die Tabelle aktualisiert wird – nicht jedoch die Bearbeitungsleiste.

Achtung: Code muss zwei Mal ausgeführt werden, damit ich „Excel nervt!“ und „Nervt Excel?“ sehe.