Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bildschirmflackern trotz ScreenUpdatin=False

Forumthread: Bildschirmflackern trotz ScreenUpdatin=False

Bildschirmflackern trotz ScreenUpdatin=False
Holger
Hallo Excelaner,
bei folgenden Code sieht man ein Teil der Ausführung trotz "Application.ScreenUpdating = False" in diesem und in den anderen Makros. Wie kann ich das Bildschirmflackern verhindern?
Sub Alle_Tabellen_berechenen()
Application.ScreenUpdating = False
With Application
.Run ("Kurzansicht")
.Run ("Zinsansprüche")
.Run ("Zinszahlungen")
.Run ("Bestandsuebersicht")
End With
Application.ScreenUpdating = False
End Sub
Außerdem möchte ich in der Tabelle bleiben, aus der ich dieses Makro aufrufe. Wie kann ich das bewerkstelligen?
Gruß
Holger
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Bildschirmflackern trotz ScreenUpdatin=False
19.05.2010 16:16:51
Hajo_Zi
Hallo Holger,
arbeite ohne Select.
Hinweise zu select usw.

AW: Bildschirmflackern trotz ScreenUpdatin=False
19.05.2010 16:17:50
Rudi
Hallo,
bist du sicher, dass in den aufgerufenen Prozeduren nicht Application.Screenupdating=true steht?
Außerdem möchte ich in der Tabelle bleiben, aus der ich dieses Makro aufrufe. Wie kann ich das bewerkstelligen?

Arbeite ohne Select und Activate.
Gruß
Rudi
Anzeige
das ist nicht schön...
19.05.2010 16:43:12
Holger
Hallo Rudi,
das Problem ist, dass die aufgerufenen Makros auch eigenständig funktionieren müssen. Und dann sind "Application.Screenupdating=true", "Select" und "Activate" nach meiner Meinung nötig.
So sieht beispielsweise eins der aufgerufenen Makros aus:
Sub Kurzansicht()
Application.ScreenUpdating = False
Dim KA$, Inv$
KA = "Stammdaten Kurzansicht"
Inv = "Inventar"
With Sheets(KA)
.Unprotect
.Range("A14:Z120").Clear
End With
With Sheets(Inv)
.Range("p1").Copy Sheets(KA).Range("l1")
.Range("A10:AM110").AutoFilter Field:=2, Criteria1:=""
.Range("A15:G110").Copy Sheets(KA).Range("A14")
.Range("T15:T110").Copy Sheets(KA).Range("H14")
.Range("Y15:Y102").Copy Sheets(KA).Range("I14")
.Range("AA15:AD110").Copy Sheets(KA).Range("J14")
.Range("A8").AutoFilter
End With
With Sheets(KA)
.Select
.Range("L1").Select
.Protect
End With
Application.ScreenUpdating = True
End Sub
Also bleibt mir nichts anderes übrig, als einen neues (Gesammt-)Makro zu schreiben, der die Codes aller 4 Makros beinhaltet, allerdings ohne "Select" und "Activate".
Oder gibt es noch eine andere Lösung?
Gruß
Holger
Anzeige
AW: das ist nicht schön...
19.05.2010 19:38:55
jowe
frag' vor dem Befehl zur Deaktivierung ab, ob das screenupdating ein-/oder ausgeschaltet ist.
If Application.ScreenUpdating = True Then Application.ScreenUpdating = False
es geht ja darum ...
19.05.2010 22:03:17
Uduuh
Hallo,
.. die Aktivierung zu verhindern.
Sub Kurzansicht()
Dim blnSreenUpDating As Boolean
blnSreenUpDating = Application.ScreenUpdating
Application.ScreenUpdating = False
Dim KA$, Inv$
KA = "Stammdaten Kurzansicht"
Inv = "Inventar"
With Sheets(KA)
.Unprotect
.Range("A14:Z120").Clear
End With
With Sheets(Inv)
.Range("p1").Copy Sheets(KA).Range("l1")
.Range("A10:AM110").AutoFilter Field:=2, Criteria1:=""
.Range("A15:G110").Copy Sheets(KA).Range("A14")
.Range("T15:T110").Copy Sheets(KA).Range("H14")
.Range("Y15:Y102").Copy Sheets(KA).Range("I14")
.Range("AA15:AD110").Copy Sheets(KA).Range("J14")
.Range("A8").AutoFilter
End With
With Sheets(KA)
.Select
.Range("L1").Select
.Protect
End With
Application.ScreenUpdating = blnSreenUpDating
End Sub

Gruß aus’m Pott
Udo

Anzeige
AW: Makro Stopp
19.05.2010 22:08:40
Daniel
Hi
ganz einfache Lösung:
las in den Untermakros das "Application.ScreenUpdating = True" am Ende weg.
Dieser Befehl ist am Ende eines Makros sowieso unnötig, da VBA die Bildschirmaktualisierung automatisch anschaltet, wenn alle Makros durchglaufen sind.
Gruß, Daniel
AW: Makro Stopp
20.05.2010 07:22:02
Holger
So, jetzt habe ich alle ".ScreenUpdating"-Möglichkeiten durchgespielt. Die besten Ergebnisse erzielen die Ideen von Uduuh (=Udo) und von Daniel.
Da die Lösung von Daniel die einfachste ist, habe ich diese auch entgültig übernommen.
Danke an alle Helfer!
Gruß Holger
Anzeige
;
Anzeige

Infobox / Tutorial

Bildschirmflackern in Excel VBA verhindern


Schritt-für-Schritt-Anleitung

Um das Bildschirmflackern in Excel VBA zu verhindern, kannst du die Bildschirmaktualisierung mit Application.ScreenUpdating steuern. Hier ist eine einfache Schritt-für-Schritt-Anleitung, wie du dies umsetzen kannst:

  1. Deaktiviere die Bildschirmaktualisierung zu Beginn deines Makros:

    Application.ScreenUpdating = False
  2. Führe deine Berechnungen oder Operationen durch.

  3. Aktiviere die Bildschirmaktualisierung wieder am Ende deines Makros:

    Application.ScreenUpdating = True

Stelle sicher, dass du dies in jedem aufgerufenen Makro machst, um ein einheitliches Verhalten zu gewährleisten. Achte darauf, dass du keine Application.ScreenUpdating = True in den Unterprozeduren verwendest, da dies das Flackern wieder verursachen kann.


Häufige Fehler und Lösungen

  1. Fehler: Bildschirmaktualisierung wird in Unterprozeduren aktiviert.

    • Lösung: Überprüfe, ob Application.ScreenUpdating = True in den aufgerufenen Prozeduren steht und entferne es.
  2. Fehler: Verwendung von Select oder Activate.

    • Lösung: Vermeide die Verwendung von Select und Activate, um das Bildschirmflackern zu reduzieren und die Performance zu verbessern.

Alternative Methoden

Eine alternative Methode zur Vermeidung von Bildschirmflackern ist die Verwendung von Variablen, um den Status der Bildschirmaktualisierung zu speichern:

Dim blnSreenUpDating As Boolean
blnSreenUpDating = Application.ScreenUpdating
Application.ScreenUpdating = False
' Deine Operationen hier
Application.ScreenUpdating = blnSreenUpDating

Diese Methode stellt sicher, dass der ursprüngliche Zustand der Bildschirmaktualisierung wiederhergestellt wird, selbst wenn andere Makros den Status ändern.


Praktische Beispiele

Hier ist ein Beispiel, das zeigt, wie du die Bildschirmaktualisierung in einem Makro korrekt verwaltest:

Sub BeispielMakro()
    Dim blnSreenUpDating As Boolean
    blnSreenUpDating = Application.ScreenUpdating
    Application.ScreenUpdating = False

    ' Operationen durchführen
    Sheets("Tabelle1").Range("A1").Value = "Test"

    Application.ScreenUpdating = blnSreenUpDating
End Sub

In diesem Beispiel wird die Bildschirmaktualisierung zu Beginn deaktiviert, die Operationen werden durchgeführt und der ursprüngliche Status wird am Ende wiederhergestellt.


Tipps für Profis

  • Vermeide unnötige Bildschirmaktualisierungen: Halte die Application.ScreenUpdating-Befehle auf ein Minimum beschränkt.
  • Optimiere deine Makros: Reduziere die Komplexität von Makros, um die Notwendigkeit für Bildschirmaktualisierungen zu minimieren.
  • Teste regelmäßig: Führe deine Makros in einer Testumgebung aus, um sicherzustellen, dass das Bildschirmflackern nicht auftritt.

FAQ: Häufige Fragen

1. Warum flackert der Bildschirm trotz Application.ScreenUpdating = False?
Das Flackern kann auftreten, wenn in den aufgerufenen Unterprozeduren Application.ScreenUpdating = True gesetzt wird. Überprüfe alle Makros auf diesen Befehl.

2. Wie kann ich Select und Activate vermeiden?
Verwende direkte Zellreferenzen und arbeite mit With-Anweisungen, um die Notwendigkeit für Select und Activate zu minimieren.

3. Welche Excel-Version benötige ich für diese Techniken?
Die beschriebenen Techniken sind in den meisten modernen Versionen von Excel verfügbar, einschließlich Excel 2010 und später.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige