如题,谢谢
解决方案 »
- 读时间怎么读
- 请教:CommondDialog 当ShowPrinter时如何让打印份数自动获得焦点?
- 问一个关于打开word和excel文件的函数的问题
- activex控件和本页上的文件交互不安全,继续进行吗?
- 如何将excel文件转换成tiff文件
- 新来的,放点分。
- 有关C#的编程
- listbox控件中,我没有设定键盘上下移动焦点呀?为何用上下左右箭头都能上下移动?还有桉数字键也能到相应的条上,我想把左右箭头改作别
- vb保存Excel时如何记忆路径??
- 这些命令如何使用?
- ADODB控件通过ODBC和SQL SERVER相连,为什么修改总是出错,求救,求救,我急用,谢谢大家!
- 各位大虾,救救我吧……
KeyPress 事件
此事件当用户按下和松开一个 ANSI 键时发生。语法Private Sub Form_KeyPress(keyascii As Integer)Private Sub object_KeyPress([index As Integer,]keyascii As Integer)KeyPress 事件语法包含下列部分:部分 描述
object 一个对象表达式,其值是“应用于”列表中的一个对象。
index 一个整数,它用来唯一标识一个在控件数组中的控件。
keyascii 是返回一个标准数字 ANSI 键代码的整数。Keyascii 通过引用传递,对它进行改变可给对象发送一个不同的字符。将 keyascii 改变为 0 时可取消击键,这样一来对象便接收不到字符。
说明具有焦点的对象接收该事件。一个窗体仅在它没有可视和有效的控件或 KeyPreview 属性被设置为 True 时才能接收该事件。一个 KeyPress 事件可以引用任何可打印的键盘字符,一个来自标准字母表的字符或少数几个特殊字符之一的字符与 CTRL 键的组合,以及 ENTER 或 BACKSPACE 键。KeyPress 事件过程在截取 TextBox 或 ComboBox 控件所输入的击键时是非常有用的。它可立即测试击键的有效性或在字符输入时对其进行格式处理。改变 keyascii 参数的值会改变所显示的字符。可使用下列表达式将 keyascii 参数转变为一个字符:Chr(KeyAscii)然后执行字符串操作,并将该字符反译成一个控件可通过该表达式解释的 ANSI 数字:KeyAscii = Asc(char)应当使用 KeyDown 和 KeyUP 事件过程来处理任何不被 KeyPress 识别的击键,诸如:功能键、编辑键、定位键以及任何这些键和键盘换档键的组合等。与 KeyDown 和 KeyUp 事件不同的是,KeyPress 不显示键盘的物理状态,而只是传递一个字符。KeyPress 将每个字符的大、小写形式作为不同的键代码解释,即作为两种不同的字符。而 KeyDown 和 KeyUp 用两种参数解释每个字符的大写形式和小写形式:keycode — 显示物理的键(将 A 和 a 作为同一个键返回)和 shift —指示 shift + key 键的状态而且返回 A 或 a 其中之一。如果 KeyPreview 属性被设置为 True,窗体将先于该窗体上的控件接收此事件。可用 KeyPreview 属性来创建全局键盘处理例程。注意...CTRL+@ 的键盘组合的 ANSI 编号是 0。因为 Visual Basic 将一个零值的 keyascii 识别为一个长度为零的字符串 (""),在应用程序中应避免使用 CTRL+@ 的组合。
if c>asc("0") and c<asc("9") then msgbox "c是数字"
if c>asc("A") and c<asc("z") then msgbox "c是字母"
返回 Boolean 值,指出表达式的运算结果是否为数。语法IsNumeric(expression)必要的 expression 参数是一个 Variant,包含数值表达式或字符串表达式。说明如果整个 expression 的运算结果为数字,则 IsNumeric 返回 True;否则返回 False。如果 expression 是日期表达式,则 IsNumeric 返回 False。
If KeyCode > 47 And KeyCode < 58 Then
MsgBox "输入的是数字"
End If
If KeyCode > 64 And KeyCode < 91 Then
MsgBox "输入的是字母"
End IfEnd Sub
' 这个例子是限制只能输入数字,仔细看看注释,可以限制任何字符。 :DOption Explicit' 限制文本框中输入的内容
' 例: 在 Text 的 KeyPress 事件中调用 KeyAscii = MaskText(KeyAscii, "0123456789", True) 则文本框只允许输入数字
Function MaskText(ByVal KeyIn As Integer, ByVal ValidateString As String, ByVal Editable As Boolean) As Integer
Dim ValidateList As String, KeyOut As Integer
If Editable = True Then
ValidateList = UCase(ValidateString) & Chr(8)
Else
ValidateList = UCase(ValidateString)
End If
If InStr(1, ValidateList, UCase(Chr(KeyIn)), 1) > 0 Then
KeyOut = KeyIn
Else
KeyOut = 0
End If
MaskText = KeyOut
End Function
Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = MaskText(KeyAscii, "0123456789", True)
End Sub
dim i as Integer
i=Len(Text1.Text)
dim j as Integer
for j=1 to i
if instr("1234567890",mid(Text1.Text,j,1))>0 then
msgbox "有数字"
else
if Lcase(mid(Text1.Text,j,1))>="a" and Lcase(mid(Text1.Text,j,1))<="z" then
msgbox "有字母"
else
msgbox "有除字母和数字之外的字符串"
end f
end if
next
End Sub
Private Sub Text1_LostFocus()
If KeyCode > 47 And KeyCode < 58 Then
MsgBox "输入的是数字"
End If
If KeyCode > 64 And KeyCode < 91 Then
MsgBox "输入的是字母"
End If
end sub
定义一个全局变量KeyCodes,在Text1_KeyPress中加一条语句将
Private sub Text1_KeyPress(keyascii As Integer)
KeyCodes=KeyAscii
end subPrivate Sub Text1_LostFocus()
If KeyCodes > 47 And KeyCodes < 58 Then
MsgBox "输入的是数字"
End If
If (KeyCodes > 64 And KeyCodes < 91)Or (KeyCodes>96 and KeyCodes<123) Then
MsgBox "输入的是字母"
End If
end sub
语法 IsNumeric(aaa)
如果整个 aaa 的运算结果为数字,则 IsNumeric 返回 True;否则返回 False。
让TEXT1文件框里仅可以输入有效的数值型数据,并且可以删除等等。回国后到下一个焦点位置。
希望对你有用!
Private Sub Text1_KeyPress( KeyAscii As Integer) If KeyAscii > 57 Or (KeyAscii < 48 And _
KeyAscii <> 13 And KeyAscii <> 8 And _
KeyAscii <> 9 And KeyAscii <> 27 And _
KeyAscii <> 46 And KeyAscii <> 3 And _
KeyAscii <> 22 And KeyAscii <> 24) Then
KeyAscii = 0
End If
If KeyAscii = 13 Then SendKeys "{Tab}"
End Sub