利用ASCII码判断If Asc(Left(mystr, 1)) >= Asc("啊") And Asc(Left(mystr, 1)) < Asc("匝") then 执行就是判断全部中文汉字,不包括中文标点符号,因为符号的ASCII怎么分布我查不到。楼主查到记得分享一下。谢谢。
Option ExplicitPrivate Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 0 Then Exit Sub If KeyAscii >= 0 Then KeyAscii = 0 End Sub
利用ASCII码判断,汉字的码的值好像是小于0 Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii <0 0 Then Text1.Text="" End If End Sub
'************************************************************************* '**函 数 名:CLen '**输 入:str(String) -要判断的字符串 '**输 出:(Long) -汉字的个数 '**功能描述:判断字符串中是否全部是汉字 '** 没有汉字返回0 '**全局变量: '**调用模块: '**作 者:影子 '**日 期:2005-01-04 12:43:48 '**修 改 人: '**日 期: '**版 本:V1.0.0 '************************************************************************* Function CLen(str As String) As Long Static SStr As String Dim i As Integer, TotalNum As Long, l As Long Dim tmpStr As String TotalNum = 0 l = Len(str) For i = 1 To l tmpStr = StrConv(Mid$(str, i, 1), vbWide) If Asc(Mid$(str, i, 1)) < 0 Then TotalNum = TotalNum + 1 SStr = str Else ' MsgBox "写入的不是汉字!" CLen = 0 Exit Function End If Next i CLen = TotalNumEnd Function
只允许输入中文的要求比较怪:一般来说,能输入中文的地方就应该也能输入其他字符。以下程序段可以实现的功能: Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii < 0 Then Text1.Text="" End If End Sub原理是因为中文的ASCII小于0。 不过,严格说来,还有个问题就是:其他非英文如日文、韩文等其他非英语和数字的ACSII值都是小于0,所以严格地说实际上要实现你的要求你还得查一下中文ASCII的分段。
Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 0 Then Exit Sub '这句什么意思呀 If KeyAscii >= 0 Then KeyAscii = 0 End Sub
If KeyAscii = 0 Then Exit Sub
If KeyAscii >= 0 Then KeyAscii = 0
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii <0 0 Then
Text1.Text=""
End If
End Sub
'**函 数 名:CLen
'**输 入:str(String) -要判断的字符串
'**输 出:(Long) -汉字的个数
'**功能描述:判断字符串中是否全部是汉字
'** 没有汉字返回0
'**全局变量:
'**调用模块:
'**作 者:影子
'**日 期:2005-01-04 12:43:48
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Function CLen(str As String) As Long
Static SStr As String Dim i As Integer, TotalNum As Long, l As Long Dim tmpStr As String TotalNum = 0 l = Len(str) For i = 1 To l tmpStr = StrConv(Mid$(str, i, 1), vbWide) If Asc(Mid$(str, i, 1)) < 0 Then TotalNum = TotalNum + 1 SStr = str Else ' MsgBox "写入的不是汉字!" CLen = 0 Exit Function End If Next i CLen = TotalNumEnd Function
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < 0 Then
Text1.Text=""
End If
End Sub原理是因为中文的ASCII小于0。
不过,严格说来,还有个问题就是:其他非英文如日文、韩文等其他非英语和数字的ACSII值都是小于0,所以严格地说实际上要实现你的要求你还得查一下中文ASCII的分段。
If KeyAscii = 0 Then Exit Sub '这句什么意思呀
If KeyAscii >= 0 Then KeyAscii = 0
End Sub