|
楼主 |
发表于 2009-3-28 21:38
|
显示全部楼层
第8部分 控件与用户窗体
技巧104 将光标返回文本框中
在用文本框往工作表录入数据时,一般会在录入到工作表前验证输入的数据是否正确,如果错误,则清空文本框内容,提示用户重新输入。但此时光标已经不在文本框中,需要重新选择文本框才能输入。
可以在Exit事件中可以设置Cancel参数值使光标停留在当前文本框中,如下面的代码所示。- #001 Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
- #002 With TextBox1
- #003 If .Text <> "" And Len(Trim(.Text)) <> 15 And Len(Trim(.Text)) <> 18 Then
- #004 .Text = ""
- #005 MsgBox "身份证号码录入错误!"
- #006 Cancel = True
- #007 End If
- #008 End With
- #009 End Sub
复制代码 代码解析:
文本框的Exit事件,在输入身份证号码后即将把焦点转移到录入按钮控件之前检查输入的身份证号码是否正确。
Exit事件在一个控件从同一窗体的另一个控件实际接收到焦点之前发生,语法如下:
Private Sub object_Exit( ByVal Cancel As MSForms.ReturnBoolean)
Cancel参数为事件状态。False表示由该控件处理这个事件(这是默认方式)。True表示由应用程序处理这个事件,并且焦点应当留在当前控件上。
第3行代码,使用Len函数和Trim函数检查输入的身份证号码是否为15位或18位。
第4行到第6行代码,如果输入的身份证号码不正确,清空文本框以便重新输入并提示用户,设置Cancel参数为True使光标停留在文本框中。
在Exit事件中之所以把文本框为空也做为通过验证的条件之一,因为如果不加上“TextBox1.Text <> ""”这一条件,那么在窗体显示后,如果用户取消输入或关闭输入窗体,也会提示输入错误。所以在录入到工作表之前再验证文本框是否为空,如下面的代码所示。- #001 Private Sub CommandButton1_Click()
- #002 With TextBox1
- #003 If .Text <> "" Then
- #004 Sheet1.Range("a65536").End(xlUp).Offset(1, 0) = .Text
- #005 .Text = ""
- #006 Else
- #007 MsgBox "请输入身份证号码!"
- #008 End If
- #009 .SetFocus
- #010 End With
- #011 End Sub
复制代码 代码解析:
输入按钮的Click事件,把文本框数据录入到工作表A列最后一个单元格中并重新选择文本框准备下一次输入。
第3行代码,在输入到工作表前检查文本框是否为空。
第4、5行代码,如果文本框不为空,录入数据到工作表并清空文本框内容。
第7行代码,如果文本框为空,提示用户输入数据。
第8行代码,使用SetFocus方法将光标返回到文本框中以便重新输入。
SetFocus方法将焦点移动到对象的实例中,语法如下 :
object.SetFocus
参数object.是必需的,一个有效的对象。
运行窗体,在输入框中输入身份证号码后自动验证输入的数据,如果输入数据错误,清空文本框并提示用户重新输入,如图所示。
[ 本帖最后由 yuanzhuping 于 2009-3-28 23:26 编辑 ] |
|