Anzeige
Archiv - Navigation
1700to1704
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Userform flackert stark - DoEvents?
14.07.2019 19:13:57
Jojo
Hallo zusammen,
ich habe eine relativ große Userform, die extrem flackert bzw. die Steuerelemente auf der Userform flackern.
Ich habe in verschiedenen Enter- und Exit Events jeweils ein Me.Repaint verwendet, da das jeweils aktive Steuerelement eine andere Rahmenfarbe zugewiesen bekommt, damit es für den Nutzer erkennbar ist, in welchem Steuerelement er sich gerade befindet. Beim Verlassen des Steuerelementes wird die Rahmenfarbe zurückgesetzt.
Ich kann die Datei, die die Userform enthält, leider in dieser Form nicht hochladen, da hier viele sensible Daten enthalten sind.
Die Userform an sich ist auf ShowModul = True.
Ich habe bereits im Internet gelesen, dass wenn i.B. Schleifen ins Spiel kommen hier DoEvents helfen soll. Allerdings verwende ich keine relevanten Loops und ich wüsste in diesem Fall nicht so Recht, wo ich das DoEvents platzieren muss.
Ich weiß, dass das so recht magere Angaben sind. Vielleicht hatte jemand schon mal ein ähnliches Problem und kann trotzdem helfen.
Vielen Dank an Euch im Voraus.
Viele Grüße.

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

Betreff
Datum
Anwender
Anzeige
AW: Userform flackert stark - DoEvents?
14.07.2019 19:20:35
Rainer
Hallo Jojo,
Ersetze doch zum Test alle
Me.Repaint
durch

DoEvents
DoEvents
und gucke was passiert.
Entweder flackert es oder nicht.
Wichtig ist, es doppelt auszuführen.
Gruß, Rainer
AW: Userform flackert stark - DoEvents?
14.07.2019 19:39:45
Jojo
Hi Rainer,
danke dir für deine Hilfe.
Ich habe die DoEvents eingebaut und das Me.Repaint einmal in einem Steuerelement beibehalten. Und genau hier fängt die Userform zu flackern an. Me.Repaint scheint also der Übeltäter zu sein.
Auch mit folgendem Code keine Besserung:
DoEvents
Me.Repaint
DoEvents
Me.Repaint ist ja doch recht nützlich an der ein oder anderen Stelle, aber unter diesen Umständen muss ich es wohl weglassen, es sei denn, es gibt noch eine andere Lösung :-)
Anzeige
AW: Userform flackert stark - DoEvents?
14.07.2019 20:35:08
Rainer
Hallo Jojo,
schau mal hier https://www.herber.de/bbs/user/130886.xlsm
Das ist eine UserForm ohne "Repaint".
Der doppelte "DoEvents" hat eigentlich den gleichen Effekt (Aktualisieren der Formen) ohne diese komplett neu zu Zeichnen.
Aber es steht dir natürlich frei, meine Vorschläge zu probieren.
Bei "VBA gut" kann ich dir nicht mehr viel neues erzählen.
Gruß, Rainer
AW: Userform flackert stark - DoEvents?
14.07.2019 21:48:00
Jojo
Hallo Rainer,
deine Vorschlag funktioniert wirklich gut, allerdings ist die einzige Einschränkung das teilweise die Rahmenfarbe der Steuerelemente nicht wieder zurückgesetzt werden :-(
Ich denke ich werde dann diesen Code einfach weglassen, dann ist zumindest das unschöne Flackern weg :-)
Vielen Dank dir nochmals.
Anzeige
AW: Userform flackert stark - DoEvents?
14.07.2019 23:16:51
Rainer
Hallo Jojo,
das ist schwer zu beurteilen ohne deine Mappe zu kennen.
Ich vermute den Fehler eher im Code-Ablauf. Setze doch mal eine Haltmarke auf die Zeile, die den Rahmen ändern soll und gucke ob der Code überhaupt ausgeführt wird oder nicht.
Gruß, Rainer
AW: Userform flackert stark - DoEvents?
15.07.2019 10:02:46
Johannes
Hallo Rainer,
ich habe dir mal eine Beispielmappe hochgeladen.
https://www.herber.de/bbs/user/130907.xlsm
Solange ich mit Tab durch die TextBoxen springe funktioniert es super.
Wenn ich dann aber mit der Maus in eine nicht aktive Textbox klicke, wird das Enter-Events offensichtlich nicht ausgeführt, d.h. die Rahmenfarbe bleibt unverändert.
Viele Grüße,
Jojo
Anzeige
AW: Userform flackert stark - DoEvents?
15.07.2019 10:59:19
Rainer
Hallo Jojo,
das war jetzt ein wenig Knobelei, aber es ist ganz witzig. Dein Code:
Private Sub TextBox1_Enter()
TextBox1.BorderColor = vbBlack
DoEvents
DoEvents
End Sub
funktioniert nicht so wie gedacht. Aber jetzt füge ich nur eine Zeile hinzu:
Private Sub TextBox1_Enter()
TextBox1.BorderColor = vbBlack
    TextBox1.BackColor = vbWhite
DoEvents
DoEvents
End Sub
und nun klappt es so wie es soll. Bitte frag mich nicht warum. Irgendwo in den Untiefen der Excel-Programmierung werden wahrscheinlich Hintergrundfarben anders priorisiert als Rahmenfarben. Oder was ganz anderes, ich hab keine Ahnung.
Ich habe aber den Code noch etwas einfacher gemacht:
Option Explicit
Private Sub TextBox1_Enter()
Call Rahmenfarbe
End Sub
Private Sub TextBox2_Enter()
Call Rahmenfarbe
End Sub
Private Sub TextBox3_Enter()
Call Rahmenfarbe
End Sub
Private Sub Rahmenfarbe()
Dim cCont As Control
For Each cCont In Me.Controls
If TypeName(cCont) = "TextBox" Then
If ActiveControl.Name = cCont.Name Then
cCont.BorderColor = vbBlack
cCont.BackColor = vbWhite
Else
cCont.BorderColor = RGB(217, 217, 217)
cCont.BackColor = vbWhite
End If
End If
Next cCont
'Me.Repaint
DoEvents
DoEvents
End Sub
Wenn du diesen Code nimmst hast du 2 Vorteile:
1. Brauchst du keinen "Exit" Event. Somit müssen nicht 2 Events gleichzeitig abgearbeitet werden.
2. Ist der Code für alle Textboxen identisch. Somit lager ich die Änderungnen in eine Extra-Sub aus und dein TextBox_Enter ist ein Einzeiler geworden.
Gruß, Rainer
Anzeige
AW: Userform flackert stark - DoEvents?
15.07.2019 11:03:54
Johannes
Hallo Rainer,
wow super...vielen Dank dir.
Ich habe es gerade einmal in der Beispieldatei getestet und in der Tat es funktioniert.
Ich werde es gegen Abend einmal in meiner Originaldatei testen und gebe dir dann nochmal final Feedback.
Tausend Dank für deine super Hilfe.
Gruß, Jojo
AW: Userform flackert stark - DoEvents?
15.07.2019 11:21:53
Rainer
Hallo Jojo,
danke für die Rückmeldung und viel Erfolg.
Melde dich einfach wieder wenn irgendwas nicht klappt wie es soll.
Gruß, Rainer
AW: Userform flackert stark - DoEvents?
15.07.2019 23:08:27
Jojo
Hallo Rainer,
also du bist ein Genie.
Das ist noch viel besser als das die Enter-Exit-Wechselei und der gesamte Code wird insofern wesentlich kompakter.
Tausend Dank und Chapeau. Toll dass man auch als fortgeschrittener VBA-Nutzer hier immer wieder Dinge dazulernen kann.
LG,
Johannes
Anzeige

29 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige