Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA-Application.OnKey不允许重置_Vba_Excel - Fatal编程技术网

VBA-Application.OnKey不允许重置

VBA-Application.OnKey不允许重置,vba,excel,Vba,Excel,问题的根源是: 当我存储代码时 Application.OnKey "~", "SomeSub" 在工作表的方法内部,它是有效的。但是,如果我先重置Application.OnKey,导致代码看起来像 Application.OnKey "~" Application.OnKey "~", "SomeSub" 它不再允许用户使用Enter键运行SomeSub 情况: 我有一个以用户登录开始的程序。用户在输入用户名后不必单击按钮,我希望重置Enter键的含义,以简单地运行“SignIn”子项。

问题的根源是:

当我存储代码时

Application.OnKey "~", "SomeSub"
在工作表的方法内部,它是有效的。但是,如果我先重置
Application.OnKey
,导致代码看起来像

Application.OnKey "~"
Application.OnKey "~", "SomeSub"
它不再允许用户使用
Enter
键运行
SomeSub

情况:

我有一个以用户登录开始的程序。用户在输入用户名后不必单击按钮,我希望重置
Enter
键的含义,以简单地运行“SignIn”子项。与下一页相同:在他们输入所需信息后,我希望
Enter
键运行下一个子项。因此,我重新分配了Enter键的含义。问题是,在我明确了时间的含义后,设置

Application.OnKey "~", "SomeSub"
不再有效

我做错了什么


编辑:我通过使用
工作表\u Change
事件解决了我的问题。但是,我仍然很好奇为什么
应用程序。OnKey
似乎只工作一次

转到“登录”按钮的属性并将属性默认值设置为true

如果现在使用“输入”按钮,则会触发单击事件

或者在初始化事件表单中使用此代码

CommandButton1.Default = True

Application.OnKey“~”,“”请重新考虑此问题。这种非标准行为(与人们使用的Windows应用程序不一致)可能首先会让用户感到困惑,然后让用户感到沮丧。用户不需要单击按钮,他们可以通过制表符将焦点转移到按钮上,然后按enter键。坚持平台的UI惯例几乎总是更好的。因为用户将在平板电脑上,他们将无法访问
enter
键。钥匙实际上是由条形码扫描器“推动”的,该扫描器在每个条形码的末尾都编程了一个返回。这将使用户只需扫描代码并继续,而不是手动激活命令。@Nathan_Sav我尝试了您的建议,但没有diceI无法使用Excel 2010 for Windows重现此问题。如果我设置了ON键,它就工作了。如果我在设置ON键之前立即清除它,它就会工作。我怀疑你调用了一些代码,这些代码在没有意识到的情况下将其清除。不幸的是,由于我的程序经常创建和销毁按钮,我使用的是表单控件,而不是ActiveXI。我也在谈论表单控件