在vb中怎么样用代码实现:使文本框中只能输入汉字不能输入数字?需要完整的代码段

 我来答
蔡瑀
2011-04-18 · TA获得超过231个赞
知道小有建树答主
回答量:424
采纳率:0%
帮助的人:327万
展开全部
'给你一个函数,保存到模块里 调用很简单
Public Enum StringL
计算字符串长度 = 0
查找字符串 = 1
判断数字是否存在 = 2
判断数字是否是小数 = 3
判断汉字是否存在 = 4
判断小写字母是否存在 = 5
判断大写字母是否存在 = 6
计算字符串出现次数 = 7
计算数字出现次数 = 8
计算汉字出现次数 = 9
计算小写字母出现次数 = 10
计算大写字母出现次数 = 11
删除所有非汉字的字符串 = 12
删除所有非数字的字符串 = 13
删除所有非小写字母的字符串 = 15
删除所有非大写字母的字符串 = 16
删除所有非字母的字符串 = 17
End Enum
Public Function FindStr(ByVal Text, Optional ByVal Find As String, Optional ByVal Mode As StringL = 0)
Select Case Mode
Case 计算字符串长度 ' 不包括换行符
For i = 0 To UBound(Split(Text, vbCrLf))
For k = 1 To Len(Split(Text, vbCrLf)(i))
j = j + 1
Next
Next
Case 查找字符串
j = IIf(InStr(Text, Find) > 0, 1, 0)
Case 计算字符串出现次数
For i = 1 To Len(Text)
If Mid(Text, i, Len(Find)) = Find Then j = j + 1
Next
Case 判断数字是否存在
For i = 0 To 9
j = IIf(InStr(Text, i), 1, 0)
If j > 0 Then Exit For
Next
Case 判断数字是否是小数
For i = 1 To Len(Text)
If Mid(Text, i, 1) = "." And IsNumeric(Text) = "1" Then If IsNumeric(Mid(Text, i, Len(Text))) = "1" Then j = 1: Exit For Else j = 0: Exit For Else j = 0
Next
Case 判断汉字是否存在
For i = 1 To Len(Text)
If Asc(Mid(Text, i, 1)) < 0 Then j = 1: Exit For Else j = 0
Next
Case 判断小写字母是否存在
For i = 1 To Len(Text)
If Asc(Mid(Text, i, 1)) >= 97 And Asc(Mid(Text, i, 1)) <= 122 Then j = 1: Exit For Else j = 0
Next
Case 判断大写字母是否存在
For i = 1 To Len(Text)
If Asc(Mid(Text, i, 1)) >= 65 And Asc(Mid(Text, i, 1)) <= 90 Then j = 1: Exit For Else j = 0
Next
Case 计算数字出现次数
For i = 1 To Len(Text)
If IsNumeric(Mid(Text, i, 1)) = "1" Then j = j + 1
Next
Case 计算汉字出现次数
For i = 1 To Len(Text)
If Asc(Mid(Text, i, 1)) < 0 Then j = j + 1
Next
Case 计算小写字母出现次数
For i = 1 To Len(Text)
If Asc(Mid(Text, i, 1)) >= 97 And Asc(Mid(Text, i, 1)) <= 122 Then j = j + 1
Next
Case 计算大写字母出现次数
For i = 1 To Len(Text)
If Asc(Mid(Text, i, 1)) >= 65 And Asc(Mid(Text, i, 1)) <= 90 Then j = j + 1
Next
Case 删除所有非汉字的字符串
j = Text
For Each i In Split(Text, vbCrLf)
For k = 1 To Len(i)
If Asc(Mid(i, k, 1)) >= 0 Then
If Mid(i, k, 1) <> NL And Mid(i, k, 1) <> Space(1) Then j = Replace(j, Mid(i, k, 1), "")
End If
Next
Next
Case 删除所有非数字的字符串
j = Text
For Each i In Split(Text, vbCrLf)
For k = 1 To Len(i)
If IsNumeric(Mid(i, k, 1)) = False Then
If Mid(i, k, 1) <> NL And Mid(i, k, 1) <> Space(1) Then j = Replace(j, Mid(i, k, 1), "")
End If
Next
Next
Case 删除所有非小写字母的字符串
j = Text
For Each i In Split(Text, vbCrLf)
For k = 1 To Len(i)
If Asc(Mid(i, k, 1)) < 97 Or Asc(Mid(i, k, 1)) > 122 Then
If Mid(i, k, 1) <> NL And Mid(i, k, 1) <> Space(1) Then j = Replace(j, Mid(i, k, 1), "")
End If
Next
Next
Case 删除所有非大写字母的字符串
j = Text
For Each i In Split(Text, vbCrLf)
For k = 1 To Len(i)
If Asc(Mid(i, k, 1)) < 65 Or Asc(Mid(i, k, 1)) > 90 Then
If Mid(i, k, 1) <> NL And Mid(i, k, 1) <> Space(1) Then j = Replace(j, Mid(i, k, 1), "")
End If
Next
Next
Case 删除所有非字母的字符串
j = Text
For Each i In Split(Text, vbCrLf)
For k = 1 To Len(i)
If (Asc(Mid(i, k, 1)) < 97 Or Asc(Mid(i, k, 1)) > 122) And (Asc(Mid(i, k, 1)) < 65 Or Asc(Mid(i, k, 1)) > 90) Then
If Mid(i, k, 1) <> NL And Mid(i, k, 1) <> Space(1) Then j = Replace(j, Mid(i, k, 1), "")
End If
Next
Next
End Select
FindStr = j
End Function
百度网友bdb9803
2011-04-18 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:53%
帮助的人:9956万
展开全部
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim nKey As Long

If KeyAscii = 8 Then Exit Sub '保留的编辑操作
nKey = KeyAscii
If nKey < &HB0A1 Or nKey > &HF7FE Then
KeyAscii = 0
MsgBox "请输入汉字 "
End If
End Sub
更多追问追答
追问
您好~~您提供的代码的确实现了该功能可是不论输入的是不是汉字都会提示“请输入汉字”能否改进呢?谢谢~
追答
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii >= -20319 And KeyAscii <= -3652 Or KeyAscii = 8 Then
Else
KeyAscii = 0
End If
End Sub
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-04-19
展开全部
在vb中怎么样用代码实现:使文本框中只能输入汉字不能输入数字?需要完整的代码段
用文本框框不好实现

RichTextBox控件可以做

Private Sub RichTextBox2_Change()
For i = 1 To Len(RichTextBox2.Text)
If Mid(RichTextBox2.Text, i, 1) > Mid(RichTextBox1.Text, i, 1) Then
RichTextBox1.SelStart = i - 1
RichTextBox1.SelLength = 1
RichTextBox1.SelColor = vbRed
End If
Next i
End Sub

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gaphy2010
2011-04-18 · TA获得超过5848个赞
知道小有建树答主
回答量:786
采纳率:0%
帮助的人:817万
展开全部
以 Text1,Text2 举例,除了(0-9)都可输入
Option Explicit

Dim ld1 As Boolean, ld2 As Boolean
Dim a As String

Private Sub Text1_Change()
If ld1 Then
Text1.Text = a
Text1.SelStart = Len(a)
End If
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
a = Text1.Text
If KeyAscii >= 48 And KeyAscii <= 57 Then
ld1 = True
Else
ld1 = False
End If
End Sub

Private Sub Text2_Change()
If ld2 Then
Text2.Text = a
Text2.SelStart = Len(a)
End If
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
a = Text2.Text
If KeyAscii >= 48 And KeyAscii <= 57 Then
ld2 = True
Else
ld2 = False
End If
End Sub
追问
您好
追答
没有装 VS2005
Text2.SelStart = Len(a) 目的是 把光标移动到文本框中文字的末尾,取消这句的话,每当输入数字,需然输不进,但光标移动到文本框中文字的开头,给输入带来不便...用VS2005实现这一句就行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
岔路程序缘

2011-04-18 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3385万
展开全部
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii > 0 Then KeyAscii = 0
End Sub

就可以在text1中除了汉字其它符号都输不进去了。
更多追问追答
追问
谢谢您~~可是还是可以输入数字~~能改进一下么?谢谢了~~
追答
我试过了,按数字并不会输入到文本框里呀!
要不。。。。。你把这部分程序发过来,我帮你一改就可以了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式