Re-Fokussierung auf eine Excel-Userform-ComboBox
Einem Benutzer die Eingabe von Daten in der Region Bearbeiten einer ComboBox
Dem ComboBox-Change-Ereignis wird verwendet, um führen Sie den folgenden Code;
AppActivate "Microsoft Excel"
:
'Do some stuff
:
UserForm1.Show
UserForm1.ComboBox1.SetFocus
Dies funktioniert OK, ABER; auch wenn die ComboBox jetzt ist der Fokus wieder (nach dem Userform.ActiveControl sowieso), es hat keine Insertion Pointer auf diese Tatsache hinweisen, und der Benutzer muss Sie Erneut Wählen Sie das Kombinationsfeld, bevor er fortfahren kann die Eingabe von Daten
Ich möchte es so haben, dass das Einsetzen Zeiger wieder angezeigt und der Benutzer kann weiterhin die Eingabe von Daten direkt, ohne Re-Wählen Sie die ComboBox
Hinzufügen die folgende Codezeile
SendKeys "{TAB}+{TAB}{RIGHT}"
ist eine Lösung, aber es ist etwas chaotisch (es erzeugt ComboBox-Events und mithilfe der Tastaturbefehle ist am besten vermeiden, wenn überhaupt möglich)
Kann jeder jeden schlagen eine bessere Lösung?
F: Warum müssen schwarze Schafe, die weniger Essen als die weißen Schafe?
A. Weil es nicht so viele von Ihnen
Du musst angemeldet sein, um einen Kommentar abzugeben.
die Sache ist die userform selbst vielleicht nicht den Fokus haben, über das Arbeitsblatt oder die anderen userforms.
Versuchen, diesen code:
oder generell der Fokus richtig eingestellt ist, rufen Sie dieses Untermenü:
Ich auch verwenden diese Art von code zu bewegen, den Fokus auf das Formular, wenn ich Sie brauche ControlTipText zeigt auf hover. Wenn das Formular kein Fokus hat, die Sprechblasen zeigen nicht auf Maus-hover...
.Visible
dann.SetFocus
gearbeitet! Ich hatte harte Zeit, Fähigkeit, beginnen Sie mit der Eingabe in ComboBox nach UserForm initialisiert.Nach
hinzufügen
'Do some stuff
es kann auch etwas anderes sein was es nicht funktionieren.Am Ende der UserForm Ändern-Ereignis, fügen Sie folgenden Quelltext:
In einem Modul den code hinzufügen:
Ich habe laufen in mehrere Male. Aus irgendeinem Grund funktioniert es beim Aufruf aus einem Modul. Die Eine Sekunde ist kaum spürbar für den Anwender. Wenn Sie es vorziehen, können Sie auch hinzufügen, dass es früher in den Ereignis-code, wird es warten, bis die aktuelle routine beendet ist und führen Sie dann sofort die folgenden (1 Sekunde - Zeit für den restlichen code). Hoffe, das hilft.