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

Flackern trotz ScreenUpdating = False

Forumthread: Flackern trotz ScreenUpdating = False

Flackern trotz ScreenUpdating = False
05.02.2007 19:56:47
Roland
Hallo Excelprofis
ich habe wieder einmal eine Frage, bei der ihr mir sicher weiterhelfen könnt.
Mit dem Makro "FilterEinzel" (ist im untenstehenden Makro enthalten) filtre und markiere ich auf 12 Monatsblättern die Daten, die ich auf der Jahresansicht brauche.
Mit dem untenstehenden Makro hole ich nun alle Daten aus den Monatsblättern und Kopiere sie in die Jahresansicht.
Das Funktioniert alles soweit so gut. Nur habe ich ein Problem: Beim ausführen des Makros sieht man auf dem Bildschirm trotz Application.ScreenUpdating = False alle Monatsblätter durchlaufen und auch die Linienkorrektur am schluss.
Dieses Manko möchte ich gerne beheben. Was mache ich falsch oder kann man das Makro irgendwie ändern oder etwas einblenden so lange die Berechnung läuft?
Besten Dank für eure Hilfe.
Gruss
Roland

Sub EinzelblattFüllen()
Application.ScreenUpdating = False
Filter.FilterEinzel                   ' inkl.Filter zurücksetzen
Worksheets("Einzel").Select
ActiveSheet.Unprotect myPwd
Worksheets(1).Select
Selection.Copy
Worksheets("Einzel").Select
Range("F6").Select
ActiveSheet.Paste
Worksheets(2).Select
Selection.Copy
Worksheets("Einzel").Select
Range("F7").Select
ActiveSheet.Paste
Worksheets(3).Select
Selection.Copy
Worksheets("Einzel").Select
Range("F8").Select
ActiveSheet.Paste
Worksheets(4).Select
Selection.Copy
Worksheets("Einzel").Select
Range("F9").Select
ActiveSheet.Paste
Worksheets(5).Select
Selection.Copy
Worksheets("Einzel").Select
Range("F10").Select
ActiveSheet.Paste
Worksheets(6).Select
Selection.Copy
Worksheets("Einzel").Select
Range("F11").Select
ActiveSheet.Paste
Worksheets(7).Select
Selection.Copy
Worksheets("Einzel").Select
Range("F12").Select
ActiveSheet.Paste
Worksheets(8).Select
Selection.Copy
Worksheets("Einzel").Select
Range("F13").Select
ActiveSheet.Paste
Worksheets(9).Select
Selection.Copy
Worksheets("Einzel").Select
Range("F14").Select
ActiveSheet.Paste
Worksheets(10).Select
Selection.Copy
Worksheets("Einzel").Select
Range("F15").Select
ActiveSheet.Paste
Worksheets(11).Select
Selection.Copy
Worksheets("Einzel").Select
Range("F16").Select
ActiveSheet.Paste
Worksheets(12).Select
Selection.Copy
Worksheets("Einzel").Select
Range("F17").Select
ActiveSheet.Paste
Filter.FilterAufheben
Worksheets("Einzel").Select
'Linien richtig setzen
Range("F6:BO17").Select
Application.CutCopyMode = False
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlHairline
.ColorIndex = xlAutomatic
End With
[K22].Select
ActiveWindow.SmallScroll Down:=-24
ActiveSheet.Protect myPwd
Application.ScreenUpdating = True
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Flackern trotz ScreenUpdating = False
05.02.2007 19:59:17
Hubert
Hi,
lass die ganze Selektiererei weg, dann flackert auch nichts.
mfg Herbert
AW: Flackern trotz ScreenUpdating = False
05.02.2007 20:07:12
Roland
Hallo Herbert
besten Dank für Deine schnelle Antwort.
Leider sehe ich in VBA (noch)nicht so super durch. Könntest Du mir vielleicht für den ersten Monat = Worksheet(1) das einmal umschreiben, denn ich komme da irgend wie nicht weiter. (Ich denke den Rest sollte ich dann hinkriegen.)
Besten Dank
mfg Roland
Anzeige
AW: Flackern trotz ScreenUpdating = False
05.02.2007 20:22:09
mumpel
Hallo!
Hier mal ein Beispiel
Worksheets(1).Copy
Worksheets("Einzel").Activate
Range("F6").Paste
Worksheets(2).Activate
Worksheets(2).Copy
Worksheets("Einzel").Activate
Range("F7").Paste
Gruss Rene
AW: Flackern trotz ScreenUpdating = False
05.02.2007 20:32:06
HAW
Hallo Roland,
hier ein Beispiel:

Sub EinzelblattFüllen()
Dim wsE As Worksheet
Set wsE = ThisWorkbook.Worksheets("Einzel")
Application.ScreenUpdating = False
Filter.FilterEinzel                   ' inkl.Filter zurücksetzen
'    Worksheets("Einzel").Select
wsE.Unprotect myPwd
Worksheets(1).Range("A1:X20").Copy wsE.Range("F6")
End Sub

ich habe angenommen, dass du den Bereich A1:X20 der ersten Tabelle kopieren willst, denn aus deinem Code geht nicht hervor, was denn da jeweils in den einzelnen Tabellen ausgewählt ist (Selection)
Du siehst, dass das ganze Kopieren nur eine Zeile benötigt.
Gruß Heinz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Flackern in Excel beim Einsatz von ScreenUpdating


Schritt-für-Schritt-Anleitung

Um das Flackern in Excel trotz der Einstellung Application.ScreenUpdating = False zu beheben, solltest du die Selektiererei in deinem VBA-Makro vermeiden. Hier ist eine modifizierte Version deines ursprünglichen Makros:

Sub EinzelblattFüllen()
    Dim wsE As Worksheet
    Set wsE = ThisWorkbook.Worksheets("Einzel")
    Application.ScreenUpdating = False
    Filter.FilterEinzel  ' inkl. Filter zurücksetzen
    wsE.Unprotect myPwd

    ' Daten von den Monatsblättern kopieren
    For i = 1 To 12
        Worksheets(i).Range("A1:X20").Copy wsE.Cells(5 + i, 6) ' F6 bis F17
    Next i

    Filter.FilterAufheben
    wsE.Protect myPwd
    Application.ScreenUpdating = True
End Sub

In diesem Code wird die Selektiererei vermieden, was das Flackern in Excel erheblich reduziert. Die Daten werden direkt in die Zielzellen kopiert.


Häufige Fehler und Lösungen

  1. Flackern trotz ScreenUpdating = False
    Lösung: Vermeide die Nutzung von .Select und .Activate. Stattdessen solltest du direkt auf die Zellen zugreifen.

  2. Fehler beim Kopieren von Daten
    Lösung: Stelle sicher, dass der Bereich, den du kopieren möchtest, korrekt angegeben ist. Achte darauf, dass die Zielzelle in der richtigen Tabelle existiert.


Alternative Methoden

Eine Möglichkeit, das Flackern zu reduzieren, besteht darin, die Application.DisplayAlerts-Einstellung auf False zu setzen. Dies kann helfen, zusätzliche Bildschirmaktualisierungen zu vermeiden:

Application.DisplayAlerts = False

Vergiss nicht, diese Einstellung am Ende deines Makros wieder auf True zu setzen.


Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du die Daten von mehreren Blättern in dein Jahresblatt kopieren kannst, ohne dass es zu Flackern kommt:

Sub CopyData()
    Dim wsE As Worksheet
    Set wsE = ThisWorkbook.Worksheets("Einzel")
    Application.ScreenUpdating = False

    For i = 1 To 12
        Worksheets(i).Range("A1:X20").Copy wsE.Cells(5 + i, 6)
    Next i

    Application.ScreenUpdating = True
End Sub

Dieses Beispiel zeigt die Verwendung einer Schleife, um Daten effizient zu kopieren, ohne die Sichtbarkeit der Blätter zu beeinflussen.


Tipps für Profis

  • Verwende With-Anweisungen: Dies kann die Lesbarkeit und Effizienz deines Codes erhöhen.
  • Reduziere die Anzahl der Berechnungen: Wenn du mit großen Datenmengen arbeitest, kannst du die Berechnungseinstellungen vorübergehend auf xlCalculationManual setzen.
  • Debugging: Aktiviere die Bildschirmaktualisierung wieder temporär, um zu überprüfen, wo mögliche Fehler auftreten.

FAQ: Häufige Fragen

1. Warum flackert Excel trotz ScreenUpdating = False?
Das Flackern kann auftreten, wenn du .Select oder .Activate verwendest, da diese Befehle Excel dazu bringen, die Benutzeroberfläche ständig zu aktualisieren.

2. Wie kann ich das Flackern beim Kopieren von Daten vermeiden?
Vermeide die Verwendung von Selektionsbefehlen und kopiere Daten direkt in die Zielzellen, wie in den oben genannten Beispielen gezeigt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige