深圳office培训 深圳excel培训
深圳excel培训 深圳office培训
咨询服务
深圳office培训
深圳office培训
office培训
excel培训
ppt培训
vba培训
access培训
word培训
visio培训
project培训
outlook培训
数据库培训
深圳access培训
深圳sql培训
深圳office培训
 

vba如何限制文本框的输入


2016年8月10日 作者: 来源:


用户在使用文本框输入数据时,往往希望能限制输入数据的类型,比如只能输入数字。但是没有内置的属性能限制在文本框中只能输入数字,只能在文本框的事件过程中使用代码来测试输入的是哪类字符,然后只允许输入数字字符和一个“-”号、一个“.”号,如下面的代码所示。

#001  Private Sub TextBox1_KeyPress(ByVal KeyANSI As MSForms.ReturnInteger)

#002      Select Case KeyANSI

#003          Case Asc("0") To Asc("9")

#004          Case Asc("-")

#005              If InStr(1, Me.TextBox1.Text, "-") > 0 Or _

#006                  Me.TextBox1.SelStart > 0 Then

#007                  KeyANSI = 0

#008              End If

#009          Case Asc(".")

#010              If InStr(1, Me.TextBox1.Text, ".") > 0 Then

#011                  KeyANSI = 0

#012              End If

#013          Case Else

#014              KeyANSI = 0

#015      End Select

#016  End Sub

代码解析:

文本框的KeyPress事件过程,测试键盘输入的是哪类字符,只允许输入数字字符和一个“-”号、一个“.”号。

KeyPress事件的语法如下:

Private Sub object_KeyPress( ByVal KeyANSI As MSForms.ReturnInteger)

参数Object是必需的,一个有效的对象。

参数KeyANSI是可选的,整数值,代表标准的数字ANSI 键代码。

第2行代码使用Case Else语句测试文本框KeyPress事件的KeyANSI参数值。

第3行代码,如果键盘输入的是0到9之间的数字字符,则允许输入。如果想在文本框中允许其它类型的字符输入,在此句代码中列出允许输入的字符即可。

第4行到第8行代码,如果键盘输入的是“-”号,先使用InStr函数测试文本框中是否已有“-”号,如果InStr函数返回值大于0,说明文本框中已有“-”号。接下来使用文本框的SelStart 属性来测试插入点,如果文本框的SelStart 属性值大于0,说明“-”号的插入点不是第一个。如果以上两个条件中有任何一个成立,将KeyAscii参数值设置为0,使文本框只能在第一位输入一个“-”号。

第9行到第12行代码,如果键盘输入的是“.”号的话,使用InStr函数测试文本框中是否已有“.”号,如果已有“.”号,将KeyAscii参数值设置为0,使文本框只能输入一个“.”号。

第13、14行代码,如果键盘输入的是其他字符则将KeyAscii参数值设置为0,使文本框不能输入其他字符。

经过以上设置文本框只允许输入数字字符和一个“-”号、一个“.”号,但是能输入中文字符。如果希望限制中文字符的输入,可以在文本框的Change事件中进行设置,如下面的代码所示。

#001  Private Sub TextBox1_Change()

#002      Dim i As Integer

#003      Dim s As String

#004      With TextBox1

#005          For i = 1 To Len(.Text)

#006              s = Mid(.Text, i, 1)

#007              Select Case s

#008                  Case ".", "-", "0" To "9"

#009                  Case Else

#010                      .Text = Replace(.Text, s, "")

#011              End Select

#012          Next

#013      End With

#014  End Sub

代码解析:

文本框的Change事件,判断输入的字符是否为数字字符和“-”号、“.”号,如果不是则使用Replace函数将文本框中输入的其他字符替换成空白。

第5、6行代码在文本框输入的所有字符中循环。

第8行代码列出允许输入的字符。如果想在文本框中允许其它字符输入,在此句代码中列出即可。

第9、10行代码,如果不是允许输入的字符,使用Replace函数替换成空白。

经过以上的设置,文本框中只能在第一位输入一个“-”号、一个“.”号和“0”到“9”的数字。

 


阅读:1813 上一则:文本框如何设置文本换行 下一则:vba开发中的多页控件如何使用

返回前页 返回顶部
温馨提示:本中心是深圳较为专业office培训机构、咨询及报名请先预约,电话:0755-82124110。
深圳地址:深圳红荔路四川大厦1109B-1110(3号龙岗线通新岭地铁站A出口10米)
热线:0755-82124110(福田、南山、宝安) 0755-22205758(罗湖、龙岗、龙华) 13510024571(东莞、惠州、珠海、广州)
北京地址:北京清华大学华业大厦三区三楼 版权所有:深圳万博计算机教育 粤ICP备11006947号-1
 
深圳信息系统项目管理师培训
深圳信息系统项目管理师培训 欢迎咨询!
您好!请点击这里咨询万博教育
深圳万博吴老师
您好!请点击这里咨询万博教育
深圳万博史老师
 
深圳信息系统项目管理师培训
深圳信息系统项目管理师培训