VBA中很奇怪的一件事情。
在VBA中,在窗体上建 个文本框,如何按enter键实现自动输入后自动清空,进行下一个输入?Private Sub TextBOX1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
.......在这里写代码就行了
End If
End Sub
利用key_press 和KEY_UP事件时,不会响应回车事件。呵呵。
只有在KEY-DOWN时才响应回车事件!请大侠论证一下,是不是如此?? 回车键只有在按下KeyDown和弹起KeyUp两个事件中才能捕捉到。KeyPress与它们的区别是它不能捕捉控制键,比如回车键、TAB键等。
弹起KeyUp事件没反应,可能是在其中处理改变了KeyCode的值。比如将它设置为零。那么就相当于过滤了这个键值。 但是在VB中是完全可以捕捉到的。
另外,你有尝试一下吗?
就写这一句:
MSGBOX KEYCODE
呵呵。 不错,是这样,在VBA中包括OfficeVBA都是这样,这一点上与VB确实有区别. 帮助文件中的说明:
KeyPress 事件发生在下列任意键被按下时:
任何可打印的键盘字符。
Ctrl 键与标准字母表中字符的组合。
Ctrl 键与任何特殊字符的组合。
Backspace 键。
Esc 键。
在下面情况下,KeyPress 事件不发生:
按下 Tab 键。
按下 Enter 键。
按任何箭头键。
引起焦点在控件之间移动的键击操作。
KeyDown 和 KeyUp 事件通常用于识别或区分以下各键:
扩充的字符键,比如功能键。
翻阅键,如 Home、End、PageUp、PageDown、向上、向下、向右、向左和 Tab 键。
组合键和标准键盘组合键 (Shift、Ctrl 或 Alt 键)。
数字键区和键盘数字键。
在下列情况下,KeyDown 和 KeyUp 事件不发生:
在带有命令按钮(其 Default 属性为 True )的窗体上按 Enter 键。
在带有命令按钮(其 Cancel 属性为 True)的窗体上按 Esc 键。
VB中是这样定义的:
--------------------------------------------------------------------------
KeyDown 和 KeyUp 事件
KeyUp 和 KeyDown 事件报告键盘本身准确的物理状态:按下键 (KeyDown) 及松开键 (KeyUp)。与此成对照的是,KeyPress 事件并不直接地报告键盘状态─ 它只提供键所代表的字符而不识别键的按下或松开状态。
进一步举例将有助于阐明这一差别。输入大写 "A" 时,KeyDown 事件获得 "A" 的 ASCII 码。在输入小写 "a" 时,KeyDown 事件获得相同的 ASCII 代码。为区分大小写,这些事件使用 shift 参数。与此相对照的是,KeyPress 事件将字母的大小写作为两个不同的 ASCII 字符处理。
-----------------------------------------------------------------------------
KeyPress 事件
在按下与 ASCII 字符对应的键时将触发 KeyPress 事件。ASCII 字符集不仅代表标准键盘的字母、数字和标点符号,而且也代表大多数控制键。但是 KeyPress 事件只识别 ENTER、TAB 和 BACKSPACE 键。KeyDown 和 KeyUp 事件能够检测其它功能键、编辑键和定位键
---------------------------------------------------------------------------
可见,在VB中的KeyPress事件可以检测到ENTER、TAB 和 BACKSPACE 键.这与实际测试结果相同. 自动输入后自动清空,你可以设置一个按钮,把它的Default属性设置为True。在它的点击事件中写入你所要的操作,这样在文本框中按回车就可以执行该按钮中的内容了。
我想这样会合理一些。
页:
[1]