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

Forumthread: Bildschirm flackert

Bildschirm flackert
05.03.2016 12:15:10
Uli
Hallo zusammen!
Ich bräuchte mal wieder Hilfe.
Das unten stehende Makro läuft. Aber der Bildschirm flackert grässlich.
Wie muss das Makro umgeschrieben werden, um Select zu vermeiden?
Sub suchen()
Dim myC As Range
Application.ScreenUpdating = False
Workbooks("Überwachung-Erweiterung").Sheets("WKN").Select
Range("D3:D523").Select
For Each myC In Selection
If myC.Value = Range("D1").Value Then
myC.Select
ActiveCell.Offset(0, -1).Copy
End If
Next
Application.ScreenUpdating = True
End Sub

mfg Uli

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Bildschirm flackert
05.03.2016 12:28:02
hary
Moin
Evtl. ist find/findnext besser.
Ungetestet!
Sub suchen()
Dim myC As Range
Dim Bereich As Range
Application.ScreenUpdating = False
Set Bereich = Workbooks("Überwachung-Erweiterung").Sheets("WKN").Range("D3:D523")
For Each myC In Bereich
If myC.Value = Range("D1").Value Then '--in welchem Blatt liegt D1
myC.Offset(0, -1).Copy '-- warum Copy und wenn dann wohin
End If
Next
Application.ScreenUpdating = True
End Sub

gruss hary

Anzeige
AW: Bildschirm flackert
05.03.2016 13:36:38
Uli
Hallo hary und Matthias!
Vielen Dank für eure schnelle Antwort.
Dein Makro funktioniert hary. Denn das Flackern wurde durch das Select verursacht.
Warum Copy?
Ein anderes Makro kopiert eine Aktie in "D1". Dann wird vom "Suchen"-Makro diese Aktie in einer Liste
gesucht. Hat er sie gefunden, rutscht der Cursor um eine Stelle nach links, wo sich die dazugehörige
WKN (Wertpapierkenn-Nummer) befindet. Jetzt kommt "Copy" und die WKN wird im Zwischenspeicher abgelegt.
Paste bzw Einfügen erfolgt nicht in Excel sondern ins Eingabefenster auf der Web-Seite meiner Bank.
Während ich die WKN bei meiner Bank eingebe läuft der Kopierprozess in Excel jedoch weiter. Das muss er
auch. Der Kopierprozess wird beendet durch die nächste Aktuallisierung der Web-Abfrage.
Danke hary.
mfg Uli

Anzeige
AW: geht mit Match
05.03.2016 13:57:51
hary
Moin
Vermute mal die Aktie/WKN ist einnmalig!?
Dann brauchst du keine Schleife ueber den ganzen Bereich.
Sub suchen()
Dim Bereich As Range
Dim a As Variant
Set Bereich = Workbooks("Überwachung-Erweiterung").Sheets("WKN").Range("D3:D523")
a = Application.Match(Range("D1"), Bereich, 0)
If IsNumeric(a) Then
Cells(a + 2, "C").Copy
End If
End Sub

gruss hary

Anzeige
was macht das Kopieren denn für einen Sinn ?
05.03.2016 12:34:32
Matthias
Hallo
Du kopierst doch nur ständig wenn myC den Wert von "D1" hat.
Ohne Select so?
Option Explicit
Sub suchen()
Dim myC As Range
Application.ScreenUpdating = False
For Each myC In Range("D3:D523")
If myC.Value = Range("D1").Value Then
myC.Offset(0, -1).Copy
End If
Next
Application.ScreenUpdating = True
End Sub

Aber einen Sinn ergibt das für mich nicht.
Gruß Matthias
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Bildschirm flackert in Excel? So behebst du das Problem!


Schritt-für-Schritt-Anleitung

Wenn dein Bildschirm in Excel flackert, kann das an der Verwendung von Select oder Activate in deinem VBA-Makro liegen. Um das Flackern zu vermeiden, kannst du die folgenden Schritte befolgen:

  1. Deaktiviere das ScreenUpdating: Setze Application.ScreenUpdating = False am Anfang deines Makros. Das verhindert, dass Excel die Bildschirmdarstellung während der Ausführung aktualisiert.

  2. Vermeide die Verwendung von Select: Anstatt Zellen mit Select auszuwählen, arbeite direkt mit den Objekten. Hier ein Beispiel:

    Sub suchen()
       Dim myC As Range
       Dim Bereich As Range
       Application.ScreenUpdating = False
       Set Bereich = Workbooks("Überwachung-Erweiterung").Sheets("WKN").Range("D3:D523")
    
       For Each myC In Bereich
           If myC.Value = Range("D1").Value Then
               myC.Offset(0, -1).Copy
           End If
       Next
    
       Application.ScreenUpdating = True
    End Sub
  3. Aktualisiere das Makro: Stelle sicher, dass dein Makro effizient ist und unnötige Operationen vermeidet.


Häufige Fehler und Lösungen

  • Bildschirm blinkt während der Ausführung: Dies geschieht oft, weil Select verwendet wird. Lösche alle Select- und Activate-Befehle aus deinem Code.

  • Fehler bei der Range-Angabe: Achte darauf, dass die Range korrekt angegeben ist. Wenn du auf D1 zugreifst, stelle sicher, dass es sich im richtigen Arbeitsblatt befindet.

  • Kopieren funktioniert nicht: Wenn der Bildschirm flimmert, kann es daran liegen, dass das Kopieren nicht im richtigen Kontext erfolgt. Achte darauf, dass das Ziel für das Kopieren korrekt definiert ist.


Alternative Methoden

Wenn du die Bildschirmflimmern in Excel VBA beheben möchtest, gibt es alternative Ansätze:

  • Verwendung von Find und FindNext: Diese Methode ist effizienter, da sie die Suche ohne Schleifen durchführt.

    Sub suchen()
       Dim myC As Range
       Dim Bereich As Range
       Application.ScreenUpdating = False
       Set Bereich = Workbooks("Überwachung-Erweiterung").Sheets("WKN").Range("D3:D523")
    
       Set myC = Bereich.Find(Range("D1").Value)
       If Not myC Is Nothing Then
           myC.Offset(0, -1).Copy
       End If
    
       Application.ScreenUpdating = True
    End Sub
  • Nutze die Match-Funktion: Diese Funktion kann verwendet werden, um die Position eines Wertes schnell zu finden, ohne alle Zellen durchlaufen zu müssen.


Praktische Beispiele

Hier sind einige Beispiele, wie du das Flackern in Excel VBA ausschalten kannst:

  1. Beispiel mit Match:

    Sub suchen()
       Dim Bereich As Range
       Dim a As Variant
       Set Bereich = Workbooks("Überwachung-Erweiterung").Sheets("WKN").Range("D3:D523")
       a = Application.Match(Range("D1"), Bereich, 0)
       If IsNumeric(a) Then
           Cells(a + 2, "C").Copy
       End If
    End Sub
  2. Beispiel mit Find:

    Sub suchen()
       Dim myC As Range
       Application.ScreenUpdating = False
       Set myC = Range("D3:D523").Find(What:=Range("D1").Value, LookIn:=xlValues)
       If Not myC Is Nothing Then
           myC.Offset(0, -1).Copy
       End If
       Application.ScreenUpdating = True
    End Sub

Tipps für Profis

  • Verwende With-Anweisungen: Dies kann dein Makro weiter optimieren und das Flackern minimieren.

    With Workbooks("Überwachung-Erweiterung").Sheets("WKN")
       ' Dein Code hier
    End With
  • Teste dein Makro in einer neuen Arbeitsmappe: So kannst du sicherstellen, dass keine anderen Makros oder Einstellungen das Flimmern verursachen.

  • Sei vorsichtig mit anderen Programmen: Manchmal kann auch eine Interaktion mit anderen Programmen das Flackern verursachen, insbesondere wenn sie im Hintergrund laufen.


FAQ: Häufige Fragen

1. Warum flackert mein Bildschirm beim Ausführen von Makros?
Das Flackern kann durch die Verwendung von Select oder Activate in deinem VBA-Code verursacht werden. Vermeide diese Befehle und deaktiviere ScreenUpdating.

2. Wie kann ich das Flackern in Excel VBA verhindern?
Stelle sicher, dass Application.ScreenUpdating = False zu Beginn deines Makros gesetzt wird und arbeite direkt mit Range-Objekten ohne Select.

3. Gibt es eine bessere Methode, um Werte zu suchen?
Ja, die Verwendung von Find oder Match ist effizienter als eine Schleife durch eine gesamte Range.

4. Was sollte ich tun, wenn das Flackern nach Änderungen weiterhin besteht?
Überprüfe deine anderen Makros und Einstellungen, die möglicherweise das Verhalten beeinflussen. Schließe auch andere Programme, die im Hintergrund laufen könnten.

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