搜索
写经验 领红包
 > 地理

vba代码在实现人机对话过程中如何做到正确的(vba对话框)

导语:VBA代码在实现人机对话过程中,如何做到文本框的智能响应

大家好,我们今日继续讲解VBA代码解决方案的第91讲内容:限制文本框的输入.应该说,VBA的内容非常的广泛,但大多数情况下我们利用到的只是很少的一部分。比较VBA和VB,VBA不用再单独建立系统的环境,何乐而不为?那么从今日开始陆续讲解一些窗体的代码经验,和大家分享。

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

这里会用到KeyPress事件,它的语法如下:

Private Sub object_KeyPress( ByVal KeyANSI As MSForms.ReturnInteger)

其中参数Object是必须的,是一个有效的对象;参数KeyANSI是可选的,整数值,代表标准的数字ANSI 键代码。ANSI是一种字符代码,为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。ANSI编码表示英文字符时用一个字节,表示中文用两个或四个字节

下面我们看看代码实测:

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Select Case KeyAscii

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

Case Asc("-")

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

Me.TextBox1.SelStart > 0 Then

KeyAscii = 0

End If

Case Asc(".")

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

KeyAscii = 0

End If

Case Else

KeyAscii = 0

End Select

End Sub

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

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

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

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

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

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

代码窗口:

代码运行窗口:

此时只可以输入数字了:

今日内容回向:

1 如何做到文本框只能输入数字?

2 本例子中你认为还可以有哪些扩展?

本文内容由快快网络小馨创作整理编辑!