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。我也在谈论表单控件