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

Application.ScreenUpdating

Forumthread: Application.ScreenUpdating

Application.ScreenUpdating
08.08.2022 10:56:34
Thomas
Hallo zusammen,
ich benutze die Funktion "Application.ScreenUpdating" in vielen Makros, um diese zu beschleunigen. Seit ca. 2 Wochen habe ich das Problem, dass das Screenupdating durch den Befehl Application.ScreenUpdating=True nicht wieder aktiviert wird.
Die Arbeitsmappen sind, abgesehen davon das ich nicht sehe was ich tue, voll nutzbar. Heißt, ich kann Werte in Zellen eintragen, weitere Makros starten oder Links benutzen. auch Schaltflächen funktionieren normal.
Nach Neustart der jeweiligen Arbeitsmappe ist auch das Screenupdating wieder aktiviert.
Was muss ich tun, damit meine Arbeitmappen mit Makros wieder normal funktionieren?
Vielen Dank im Voraus
Thomas
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Application.ScreenUpdating
08.08.2022 11:02:13
Rudi
Hallo,
kann iv nicht nachvollziehen.
ScreenUpdating wird nach Abschluss einer Prozedur automatisch wieder auf TRUE gesetzt.
Gruß
Rudi
AW: Application.ScreenUpdating
08.08.2022 11:42:09
Thomas
Hi,
ich kann es darauf eingrenzen, dass es an dem Befehl "Application.ScreenUpdating=False" und "Application.ScreenUpdating=True" liegt. Wenn ich die Befehle auskommentiere, tritt der Fehler nicht auf.
Viele Grüße
Thomas
Anzeige
AW: Application.ScreenUpdating
08.08.2022 11:50:59
snb
Application.Screenupdating=True am Ende eines Makros ist immer überflüssig.
Zeig mal die ganze Code, denn irgendwo muß dort der Fehler sein.
AW: Application.ScreenUpdating
08.08.2022 12:03:10
Thomas
Ich nehme an, dass das Problem in den Einstellungen meines Excel liegt. Auf anderen Laptops und mit anderen Profilen tritt das Problem nicht auf.

Sub MPOD()
[Deklarationen]
' Bildschirmupdate AUS
Application.ScreenUpdating = False
[Code]
' Bildschirmupdate EIN
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Application.ScreenUpdating
08.08.2022 13:33:50
Daniel
Hi
ich wüsste jetzt nicht, dass es eine Einstellung gibt, die das regelt.
Die Bildschirmaktualisierung muss bei Makroende eingeschaltet werden, alles andere ist Unsinn.
was passiert denn, wenn du die Bildschirmaktualisierung einfach aktiv lässt?
halbwegs vernünftig programmierter Code kommt in der Regel ohne das aus, bzw ist auch mit aktiver Bildschirmaktualisierung schnell.
Lediglich wenn man man direkt von Recorder aufgezeichneten Code mit Select und Selection verwendet, bringt das Ausschalten der Bildschirmaktualisierung etwas für die Geschwindigkeit.
Bei VBA gut sollte man aber das nicht mehr machen sondern vollständig referenzieren und dann reicht es aus, ein Blatt zu aktiveren auf dem das Makro nichts macht und hat den selben Effekt.
Gruß Daniel
Anzeige
AW: Application.ScreenUpdating
08.08.2022 13:43:48
Thomas
Hi Daniel,
wenn ich das ScreenUpdating einfach anlasse, funktioniert alles ohne Probleme. Das ist auch meine aktuelle Zwischenlösung.
Das Problem ist nicht auf ein Makro oder eine Arbeitsmappe beschränkt, es tritt in jedem Makro auf, dass mit der Funktion arbeitet.
Offensichtlich ist irgendwo ein Problem, wenn ohne Änderung des Codes auf einmal das ScreenUpdating ausgeschaltet bleibt. Und das würde ich gern lösen.
Viele Grüße
Anzeige
AW: Application.ScreenUpdating
08.08.2022 14:50:37
Yal
Hallo Thomas,
prüfe, ob Du nicht dazwischen einen Fehlerbehandlung hast: On Error Goto ...
Oder gar eine Fehler, die durch einen Application.DisplayAlerts = False "unsichtbar" wäre, aber trotzdem einen Ausstieg aus der Funciton/Sub verursacht.
VG
Yal
AW: Application.ScreenUpdating
08.08.2022 17:40:26
snb
Du solltest erstmals eine Behauptung testen:
1

Sub M_snb()
Application.ScreenUpdating = False
End Sub
2

Sub M_snb_000()
MsgBox Application.ScreenUpdating
End Sub
Der zweite Makro ergibt immer 'True" (in E 2010)
Anzeige
AW: Application.ScreenUpdating
08.08.2022 18:13:33
Daniel
naja schrieb ich doch.
die Bildschirmaktualisierung muss bei Makroende eingeschaltet werden, sonst kann man ja nicht mit Excel arbeiten, daher machst das System das automatisch und es muss nicht programmiert werden.
ok, den letzten teil hab ich nur gemeint und nicht geschrieben.
AW: Application.ScreenUpdating
08.08.2022 18:14:55
onur
Du hast Recht, auch wenn Microsoft behauptet:

Denken Sie daran, die Eigenschaft ScreenUpdating wieder auf True festzulegen, wenn Ihr Makro beendet wird.

Anzeige
AW: Application.ScreenUpdating
09.08.2022 08:17:28
Thomas
Vielen Dank für die Unterstützung.
Die Lösung war schlussendlich die Office Einstellungen zurückzusetzen, indem man die entsprechenden Schlüssel in der Registry löscht.
Viele Grüße
Thomas
Welche?
09.08.2022 09:00:14
Yal
Hallo Thomas,
Glückwunsch für deine Entdeckung und vielen Dank für die Rückmeldung.
Wenn Du auch noch publizierst, um welche Registry-Einträge es sich handelt, würdest Du für die nächsten Jahren jeden helfen, der durch Google-Suche auf diesen Thread stoßen ;-)
VG
Yal
Anzeige
AW: Welche?
09.08.2022 09:20:27
Thomas
Hi YAL,
das war nicht die Methode mit dem Skalpell, eher mit der Axt.
Ich habe in der Registry im Microsoft Office Ordner den Unterordner "16.0" für Office 2016/2019 gelöscht.
Die Folge ist, das man einige Registerkarten (Entwicklertools) wieder einblenden muss, ein paar Favoriten in Outlook fehlen und einige Ansichtseinstellungen zurückgesetzt sind.
Viele Grüße
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Anwendung von Application.ScreenUpdating in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den Visual Basic for Applications (VBA) Editor: Drücke ALT + F11 in Excel.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf "VBAProject (DeineArbeitsmappe)", wähle "Einfügen" und dann "Modul".

  3. Füge den folgenden Code ein:

    Sub BeispielMakro()
       ' Bildschirmaktualisierung ausschalten
       Application.ScreenUpdating = False
    
       ' Hier kommt Dein Code hin
    
       ' Bildschirmaktualisierung wieder einschalten
       Application.ScreenUpdating = True
    End Sub
  4. Schließe den VBA Editor: Klicke auf das Kreuz oder drücke ALT + Q.

  5. Führe das Makro aus: Gehe zurück zu Excel, drücke ALT + F8, wähle dein Makro aus und klicke auf "Ausführen".


Häufige Fehler und Lösungen

  • ScreenUpdating bleibt auf False: Wenn Application.ScreenUpdating = False nicht funktioniert, könnte es an einer falschen Code-Struktur oder an einer Fehlerbehandlung liegen. Überprüfe, ob du On Error Goto verwendest, da dies das Bildschirmupdate unterbrechen kann.
  • Makro funktioniert nicht wie erwartet: Stelle sicher, dass du den Befehl Application.ScreenUpdating = True am Ende deines Makros hast. Oft wird dieser Befehl nicht benötigt, da Excel es standardmäßig wieder aktiviert, aber in einigen Fällen kann es notwendig sein.
  • Registry-Einstellungen zurücksetzen: Wenn alle Stricke reißen, kann es helfen, die Office-Registry-Einstellungen zurückzusetzen. Dies sollte jedoch mit Vorsicht geschehen.

Alternative Methoden

  • Anstatt ScreenUpdating auszuschalten, könntest du versuchen, die Sichtbarkeit der Objekte oder die Aktivierung von Blättern zu minimieren. Das bedeutet, dass du auf das direkte Arbeiten mit Select und Selection verzichtest und stattdessen volle Referenzen verwendest.
  • Nutze Application.DisplayAlerts = False, um Pop-ups zu vermeiden, die das Arbeiten stören könnten.

Praktische Beispiele

Hier sind einige Beispiele, wie du Application.ScreenUpdating in verschiedenen Szenarien nutzen kannst:

  1. Datenimport:

    Sub DatenImport()
       Application.ScreenUpdating = False
       ' Code für den Datenimport
       Application.ScreenUpdating = True
    End Sub
  2. Diagrammerstellung:

    Sub DiagrammErstellen()
       Application.ScreenUpdating = False
       ' Code zur Diagrammerstellung
       Application.ScreenUpdating = True
    End Sub

In beiden Fällen kannst du die Leistung deiner Makros erheblich steigern, indem du die Bildschirmaktualisierung während der Verarbeitung ausschaltest.


Tipps für Profis

  • Vermeide unnötige Bildschirmaktualisierungen: Wenn du viel mit .Select und .Activate arbeitest, optimiere deinen Code, um diese Befehle zu reduzieren. Das vermeidet nicht nur das Ausschalten der Bildschirmaktualisierung, sondern beschleunigt auch deinen Code.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um sicherzustellen, dass Application.ScreenUpdating immer wieder aktiviert wird, selbst wenn ein Fehler auftritt. Ein Beispiel:

    Sub SicheresMakro()
       On Error GoTo FehlerHandler
       Application.ScreenUpdating = False
       ' Dein Code hier
    FehlerHandler:
       Application.ScreenUpdating = True
       MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
    End Sub

FAQ: Häufige Fragen

1. Warum bleibt Application.ScreenUpdating auf False?
Es kann an einer Fehlerbehandlung oder an einem spezifischen Fehler im Code liegen. Überprüfe deinen gesamten Code auf mögliche Ursachen.

2. Muss ich Application.ScreenUpdating = True am Ende eines Makros verwenden?
In den meisten Fällen übernimmt Excel das Automatisch, jedoch ist es eine gute Praxis, es explizit zu setzen, um sicherzustellen, dass das Bildschirmupdate aktiviert wird.

3. Was kann ich tun, wenn ScreenUpdating nicht funktioniert?
Versuche, die Registry-Einstellungen von Office zurückzusetzen oder überprüfe, ob andere Einstellungen in Excel den Prozess stören.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige