2016-04-07 15 views
0

Die Wurzel des Problems:VBA - Application.OnKey nicht zurückgesetzt Zulassen

Wenn ich den Code speichern ...

Application.OnKey "~", "SomeSub" 

innerhalb von einer Methode Arbeitsblatt, es funktioniert. wenn ich jedoch zurückgesetzt Application.OnKey zunächst den Code verursacht aussehen ...

Application.OnKey "~" 
Application.OnKey "~", "SomeSub" 

es nicht mehr ermöglicht es dem Benutzer SomeSub mit dem Enter Schlüssel

Situation auszuführen:

Ich habe ein Programm, das mit einer Benutzeranmeldung beginnt. Anstatt dass der Benutzer auf eine Schaltfläche klicken muss, nachdem der Benutzername eingegeben wurde, möchte ich die Bedeutung des Enter Schlüssels zurücksetzen, um einfach den "SignIn" Sub auszuführen. Gleiches mit dem nächsten Blatt: nachdem sie die erforderlichen Informationen eingeben, möchte ich den Enter Schlüssel, um die nächste Sub laufen lassen. Daher weise ich die Bedeutung der Eingabetaste neu zu. Problem ist, nachdem ich die Bedeutung dieser Zeit gelöscht habe, Einstellung ...

Application.OnKey "~", "SomeSub" 

funktioniert nicht mehr.

Was mache ich falsch?

EDIT: Ich habe seit meinem Problem mit einem Workaround gelöst, indem Sie das Worksheet_Change Ereignis verwenden. Aber ich bin immer noch neugierig darauf, warum Application.OnKey scheint nur einmal zu funktionieren

+0

Application.OnKey "~", "" –

+0

Bitte überdenken diese. Diese Art von Nicht-Standard-Verhalten (inkonsistent mit Windows-Anwendungen, die Benutzer verwenden) wird wahrscheinlich Benutzer zuerst verwirren und dann frustrieren. Benutzer müssen nicht auf die Schaltfläche klicken, sie können den Fokus auf die Schaltfläche legen und die Eingabetaste drücken. Es ist fast immer besser, sich an UI-Konventionen der Plattform zu halten. – MikeC

+0

Da sich die Benutzer auf einem Tablet befinden, haben sie keinen Zugriff auf die Eingabetaste. Der Schlüssel wird tatsächlich von einem Barcodescanner "gedrückt", der am Ende jedes Strichcodes eine Rückkehr programmiert hat. Dies wird so sein, dass der Benutzer einfach den Code scannen und weitermachen muss, anstatt den Befehl manuell zu aktivieren. – corbfon

Antwort

0

Gehen Sie zu den Eigenschaften Ihres "Login" -Button und setzen Sie die Eigenschaft Standard auf True.

Wenn Sie jetzt Enter verwenden, wird das Ereignis button_click ausgelöst.

oder diesen Code verwenden in Form initialisieren Ereignis

CommandButton1.Default = True 
+0

Leider, da mein Programm häufig Schaltflächen erstellt und zerstört, verwende ich Formularsteuerelemente anstelle von ActiveX – corbfon

+0

Ich spreche auch über die Formularsteuerelemente – INOPIAE

Verwandte Themen