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

Forumthread: Bildschirmflackern verhindern

Bildschirmflackern verhindern
21.01.2018 10:45:44
Olaf
Hallo,
ich bin neu hier und hoffe jemand kann mir bei einem VBA- Problem helfen!?
Ich habe ein Makro geschrieben, das bei der Auswahl einer Option aus einem Active- x Listenfeld in einem anderen Tabellenblatt eine Checkbox erstellt (Hinweis: Das Makro ist Teil eines anderen Makros).
Im Hauptmakro habe ich Application.ScreenUpdating=false bereits gesetzt und bewusst auf die Befehle activate und select verzichtet.
Das Ganze funktioniert soweit auch. Bei der Abarbeitung des Makros zur Erstellung der Checkbox taucht leider ein leichtes Bildschirmflackern auf. Ich finde keine Lösung das zu verhindern. Vielleicht hat hier jemand einen Lösungsvorschlag für das Problem?
Vielen Dank im Voraus
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bildschirmflackern verhindern
21.01.2018 10:51:04
Hajo_Zi
nur wenige schauen auf Deinen Rechner und sehen die Datei.
Ich möchte gerne den Fehler im Original sehen.
Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten anonymisieren bzw. pseudonymisieren.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung....."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben,
mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Beiträge von Werner, Luc, robert und folgende lese ich nicht.
Anzeige
AW: Bildschirmflackern verhindern
21.01.2018 11:05:15
Hajo_Zi
gut ich kann nicht helfen, da Fehler im VBA Code, das wird schonen seine Grund haben warum Fehlerhafte Datei.
Gruß Hajo
Anzeige
AW: Bildschirmflackern verhindern
21.01.2018 11:52:24
Daniel
Hi
und noch ein Tip:
gib bitte unbedingt eine Excelversion an.
Entweder die, die du hast oder die älteste Excelversion, auf der der Code laufen muss.
da Excel ständig weiterentwickelt wird, ist das eine wichtige Information, entweder dafür, wo das Problem liegen könnte, oder dafür, welche Methoden man einsetzen darf, um das Problem zu lösen.
Gruß Daniel
Anzeige
AW: Bildschirmflackern verhindern
21.01.2018 11:59:46
Olaf
Hi,
die Version ist Excel 2016.
Gruß
Olaf
AW: Bildschirmflackern verhindern
21.01.2018 12:03:05
udo
Hallo Olaf,
ohne irgendetwas von deinem Codes gesehen zu haben mal ins Blaue ...
Am Anfang deines Codes mal
Application.ScreenUpdating = False ' Bildaktualisierung deaktivieren
und irgendwo vor End Sub
wieder
Application.ScreenUpdating = True ' Bildaktualisierung wieder aktivieren
Kannst ja mal testen ?
Anzeige
AW: Bildschirmflackern verhindern
21.01.2018 12:13:53
udo
...
Option Explicit

Sub CheckBox1einfügen()
'      ========================================================================================= _
Application.ScreenUpdating = False ' Bildaktualisierung deaktivieren
On Error Resume Next 'Springt bei einer Fehlermeldung in die nächste Zeile
If Range("AD1").Value = 2 Then
Worksheets("Versicherungen").OLEObjects.Add "Forms.CheckBox.1", Left:=702, Top:=142.5, _
Height:=11.25, Width:=13.5  '   Erstellt CheckBox 1
Worksheets("Versicherungen").OLEObjects("CheckBox1").Object.BackStyle =  _
fmBackStyleTransparent                                   '   Setzt den Hintergrund der  CheckBox1 auf transparent
Worksheets("Versicherungen").OLEObjects("CheckBox1").Object.BackStyle = 0              _
'   Setzt den BackStyle auf 0
Worksheets("Versicherungen").OLEObjects("CheckBox2").PrintObject = False 'Verhindert,  _
dass das Objekt gedruckt wird
Worksheets("Versicherungen").OLEObjects("Checkbox1") = Worksheets("Ausgabenübersicht") _
.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, DisplayAsIcon:=False, Left:=702, Top:=142.5, Width:=13.5, Height:=11.25)          'Kopiert CheckBox 1 von der Tabelle "Versicherungen" in die Tabelle "Ausgabenübersicht"
Set ole = Worksheets("Ausgabenübersicht").OLEObjects
ole("CheckBox1").Name = "CheckBox2" 'Ändert den Namen der CheckBox 1 in  _
CheckBox2 in der Tabelle "Ausgabenübersicht"
Worksheets("Versicherungen").Shapes("CheckBox1").Delete 'Löscht die CheckBox2 in der  _
Tabelle "Versicherungen"
On Error GoTo 0
Else
Worksheets("Ausgabenübersicht").Shapes("CheckBox2").Delete 'Löscht die CheckBox2 in  _
der Tabelle "Ausgabenübersicht"
End If
Application.ScreenUpdating = True  ' Bildaktualisierung wieder aktivieren
End Sub

'------------------------------------------------------------------------------------------------------------------------------------------------------------------
'kannst so mal probieren in deinem Workbook
Anzeige
AW: Bildschirmflackern verhindern
21.01.2018 12:22:52
Olaf
Hallo Udo,
vielen Dank für deine Mühe. Ich hatte das allerdings selbst schon vorher ausprobiert und es hat das Bildschirmflackern leider nicht verhindert. Ich vermute, das Problem liegt beim kopieren der Checkbox aus dem Tabellenreiter "Versicherungen" und dem einfügen in den Tabellenreiter "Ausgabenübersicht".
Siehe diese Codezeile:
Worksheets("Versicherungen").OLEObjects("Checkbox1") = Worksheets("Ausgabenübersicht") _
.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, DisplayAsIcon:=False, Left:=702, Top:=142.5, Width:=13.5, Height:=11.25)
oder anders ausgedrückt:
Worksheets("Versicherungen").OLEObjects("Checkbox1").copy
Worksheets("Ausgabenübersicht") _
.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, DisplayAsIcon:=False, Left:=702, Top:=142.5, Width:=13.5, Height:=11.25)
.paste
Anzeige
AW: Bildschirmflackern verhindern
21.01.2018 12:52:38
udo
Ich erkenne ( mit meinen bescheidenen Kenntnissen ) da leider nicht warum es bei dir flackert ?
Hast du mal evtl. über einen ganz anderen Weg nachgedacht ( ohne Checkbox-Gedöhns ) ... einem Wert den du immer in einer best Zell-Adresse stehn hast und da deine Bedingungen eben ableitest ... oder einer selbst erstellten Userform.
Du müsstest evtl. dazu mal noch bissel mehr Hintergrund beschreiben. Klar für dich scheint sich das Prob. nur an jener Stelle abzuspielen, aber einige Leute hier erkennen anhand einer ausführlicheren Beschreibung deines Vorhabens evtl. einen Lösungsweg der dir helfen könnte
LG udo
Anzeige
AW: Bildschirmflackern verhindern
21.01.2018 13:47:22
Olaf
Die Checkboxen benötige ich für die Funktionalität des gesamten Tools. Ich denke, ich werde mit dem Bildschirmflackern an dieser eben Stelle leben müssen. Die Funktionalität ist ja gegeben.
Von daher nur eine Komforteinbuße.
Vielen Dank nochmals
;
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 ausschalten. Folge diesen Schritten:

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge in deinem Makro am Anfang die folgende Zeile hinzu, um die Bildschirmaktualisierung auszuschalten:
    Application.ScreenUpdating = False
  3. Füge am Ende deines Makros die folgende Zeile hinzu, um die Bildschirmaktualisierung wieder zu aktivieren:
    Application.ScreenUpdating = True
  4. Stelle sicher, dass du auf die Verwendung von .Activate oder .Select verzichtest, da dies das Bildschirmflackern verstärken kann.
  5. Teste dein Makro, um zu sehen, ob das Flackern reduziert wurde.

Häufige Fehler und Lösungen

  • Problem: Bildschirmflackern tritt weiterhin auf, obwohl Application.ScreenUpdating deaktiviert ist.

    • Lösung: Überprüfe, ob du Application.ScreenUpdating = True am Ende deines Makros vergessen hast. Das Wiederaktivieren der Bildschirmaktualisierung ist entscheidend.
  • Problem: Der Code funktioniert nicht wie erwartet.

    • Lösung: Achte darauf, dass du keine .Copy und .Paste Methoden in deinem Code verwendest, da diese oft zu Bildschirmflimmern führen. Versuche stattdessen, Objekte direkt zu erstellen oder zu ändern.

Alternative Methoden

Wenn das Deaktivieren der Bildschirmaktualisierung nicht ausreicht, gibt es alternative Methoden, um das Flackern zu reduzieren:

  • Verwendung von UserForms: Anstelle von CheckBoxen auf dem Arbeitsblatt kannst du eine UserForm verwenden, um Eingaben zu sammeln. Dies kann das Flackern erheblich reduzieren.

  • Direkte Zelländerungen: Wenn möglich, arbeite direkt mit Werten in Zellen, anstatt Objekte zu erstellen, um visuelle Effekte zu minimieren.


Praktische Beispiele

Hier ist ein Beispiel, wie du die Bildschirmaktualisierung in einem VBA-Makro korrekt implementierst:

Sub CheckBoxErstellen()
    Application.ScreenUpdating = False ' Bildschirmaktualisierung deaktivieren

    ' Beispiel zur Erstellung einer CheckBox
    Worksheets("Versicherungen").OLEObjects.Add(ClassType:="Forms.CheckBox.1", _
        Left:=100, Top:=100, Width:=50, Height:=20).Name = "CheckBox1"

    Application.ScreenUpdating = True ' Bildschirmaktualisierung aktivieren
End Sub

In diesem Beispiel wird die Bildschirmaktualisierung während der Erstellung der CheckBox deaktiviert, um das Flackern zu minimieren.


Tipps für Profis

  • VBA Debugging: Verwende die Debugging-Funktionen von VBA, um sicherzustellen, dass dein Code effizient ist und keine überflüssigen Operationen durchführt, die das Flackern verursachen könnten.

  • Code-Optimierung: Reduziere die Anzahl der Objekterstellungen und -änderungen in einer Schleife. Führe stattdessen alle Änderungen in einem Schritt durch, um die Auswirkungen auf die Bildschirmaktualisierung zu minimieren.


FAQ: Häufige Fragen

1. Was kann ich tun, wenn das Bildschirmflackern trotz der Deaktivierung der Aktualisierung anhält?
Überprüfe, ob du in deinem Code unnötige .Select oder .Activate Aufrufe verwendest, da diese das Flackern verstärken können.

2. Wie kann ich sicherstellen, dass mein Makro in älteren Excel-Versionen funktioniert?
Gib in deinem Code an, dass du die Application.ScreenUpdating Methode verwendest und teste dein Makro in der ältesten unterstützten Version von Excel, um sicherzustellen, dass es korrekt funktioniert.

3. Gibt es spezielle Einstellungen, die ich in Excel vornehmen sollte?
In den Excel-Optionen kannst du unter "Erweitert" die Hardwarebeschleunigung deaktivieren, was in einigen Fällen das Bildschirmflackern reduzieren kann.

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