2017-01-16 2 views
1

Ich bin ziemlich vertraut mit Benutzerformularen, also entschied ich mich zu versuchen, ein wenig Phantasie und versucht, ein Benutzerformular wachsen/verkleinern und neu positionieren, um auszurichten Zentrum basierend auf einem Kontrollkästchen Änderungsereignis .Excel VBA: Aktualisieren von Benutzerformular Position/Größe verlässt Spur

Der Code funktioniert wie vorgesehen, aber es gibt ein Problem. Beim Verkleinern des Benutzerformulars hinterlässt das Benutzerformular eine Spur in allen Größenschritten, die während der Schleife festgelegt wurden. Dies lässt das Programm weniger "glatt" aussehen. Ich habe einen Screenshot des Problems sowie den entsprechenden Code beigefügt.

Ich habe versucht, Variationen von DoEvents und Application.ScreenUpdating. ScreenUpdating schien nichts zu tun, während DoEvents die Anzahl der Trails halbierte, aber auch den Text innerhalb des Benutzerformulars während der Ausführung etwas verrückt machte.

Hinweis: Das Kontrollkästchen Namen „MyCheckBox“ und die Userform heißt „Spaltenauswahl“

Vielleicht versuche ich mit übertrifft Speicher oder w/e zu viel zu tun .. Jede Hilfe obwohl geschätzt wird. Vielen Dank!

Private Sub MyCheckBox_Change() 

Dim w As Integer 

Application.ScreenUpdating = False 

If MyCheckBox.Value = True Then 
    For w = 425 To 838 Step 7 
     ColumnSelect.Width = ColumnSelect.Width + 7 
     ColumnSelect.Left = ColumnSelect.Left - 3.5 
    Next w 
Else 
    'DoEvents 
    For w = 838 To 425 Step -7 
     ColumnSelect.Width = ColumnSelect.Width - 7 
     ColumnSelect.Left = ColumnSelect.Left + 3.5 
    Next w 
End If 
Application.ScreenUpdating = True 
End Sub 

enter image description here

+0

Halten diese Trails zu lange? Ist das das Problem? Denn im Grunde willst du * diese Trails erscheinen, wenn ich mich nicht irre –

+0

Die Trails dauern nur so lange, wie der Code ausgeführt wird, was 1 Sekunde entspricht. Die Spuren sind Beweise für jede erfolgreiche Schleife, da sie um 7 voneinander beabstandet sind, aber im Idealfall würde jede Spur nach jeder Iteration verschwinden. Dies würde die Benutzerform verkleinern, aber es würde immer nur eine Spur auf einmal sein. Derzeit sind alle Spuren/Iterationen sichtbar – Citanaf

+0

Mein Gefühl ist, dass dies mit den Einstellungen des Monitors wie der "Resfresh Rate" und seiner Qualität und Geschwindigkeit zusammenhängen könnte. –

Antwort

1

ich die Datei auf meinem Heim getestet (Gaming) von, die als dem Laptop/Monitor-Setup viel mächtiger ist, ich verwenden, wenn die Frage aufwirft. Es gab keine sichtbare Spur bei der Größenänderung des Benutzerformulars, daher scheint es, dass Benutzer A.S.H in seiner Annahme korrekt war, dass das Problem der PC/Monitor und nicht der Code war.

Wenn Sie Kredit für die Antwort wollen, werde ich glücklich sein, es Ihnen zu geben, reichen Sie einfach Ihre eigenen ein. Sonst werde ich das als Antwort markieren. Danke für Ihre Hilfe

+0

Kein Problem, gut zu wissen, dass das Problem gelöst ist. :) –

Verwandte Themen