这个问题有点复杂,实时的限制一个文本框text的输入内容,一旦错误就弹出提示框

sincor 2013-09-24 11:28:28
这个问题有点复杂,实时的限制一个文本框text的输入内容,一旦错误就弹出提示框?


1.要求
①只能输入数字,等号
②界面只接收数字,等号,回车和删除键

2.实现效果:
当一个文本框内输入合法字符的时候,不提示。。。
当一个文本框内输入非法的时候,输完就立刻弹出msgbox提示有多余字符输入。。。

3.示例:
正确例子:


123=01
23456=12



错误的例子:


123=01


23456=12

234=0



已经实现的部分代码

只接收数字,等号,回车和删除键的代码


Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii = 8 Or KeyAscii = 13 Or KeyAscii = 61 Then Exit Sub '删除键、回车键例外
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0

End Sub



如何实现,输入立即自动提示,现在要解决的问题就是多余回车,只要输入多余回车就报错??
是否需要用到正则表达式?
...全文
359 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sincor 2013-09-24
  • 打赏
  • 举报
回复
引用 1 楼 icbcnbxs 的回复:
我怎么没看懂。。。这错误例子和正确例子有什么区别? 剩下你要干的,就是排除多个回车的情况?ubound(split(text1.text,chr(13)))>1应该可以判断吧
我的意思是,只要出现大于1个回车,就报错 就是每行之间不能有多余回车
icbcnbxs 2013-09-24
  • 打赏
  • 举报
回复
我怎么没看懂。。。这错误例子和正确例子有什么区别? 剩下你要干的,就是排除多个回车的情况?ubound(split(text1.text,chr(13)))>1应该可以判断吧
of123 2013-09-24
  • 打赏
  • 举报
回复
其实不需要弹出对话框,禁止输入就可以了:(Text1 设置 MultiLine 属性 = True)
Option Explicit
Dim blnLastEqual As Boolean

Private Sub Text1_Change()
Dim myStart As Long
    myStart = Text1.SelStart
    Text1.Text = Replace(Text1.Text, vbCrLf & vbCrLf, vbCrLf)
    If myStart > Len(Text1.Text) Then
        Text1.SelStart = Len(Text1.Text)
    Else
        Text1.SelStart = myStart
    End If
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
    Case 8, Asc("0") To Asc("9")
        blnLastEqual = False
    Case Asc("=")
        If Mid(Text1.Text, Text1.SelStart, 1) = "=" Then
            KeyAscii = 0
        Else
            blnLastEqual = False
        End If
    Case 13
        If blnLastEqual Then
            KeyAscii = 0
        Else
            blnLastEqual = True
        End If
    Case Else
        KeyAscii = 0
End Select
End Sub
现在还是人类 2013-09-24
  • 打赏
  • 举报
回复
看看我的这篇博客,可能对你有帮助。 http://blog.csdn.net/supermanking/article/details/2959044

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧