大家好,我们今日继续讲解VBA代码解决方案的第95讲内容:如果文本框的录入校验不能通过,光标仍返回文本框中的另一方案。在上一讲中我讲了利用EXIT事件中的Cancel 参数的设置来达到我们的目的(值是True)。这种方法中大家要掌握的是EXIT事件的意义和Cancel 参数的意义。在实际利用的时候往往不是很多。今天讲到的方法往往会有广泛的应用。
今天讲使用SetFocus方法对光标进行主动的设置,这时很实际的用法,通过设置可以让光标按照自己的要求出现在你需要的控件上。SetFocus方法就是将焦点移动到对象中,语法如下 :object.SetFocus
参数object.是必须的,是一个有效的对象。对象必须是 Form 对象、MDIForm 对象或者能够接收焦点的控件。
在调用 SetFocus 方法以后,任何的用户输入将指向指定的窗体或控件。需要注意的是焦点只能移到可视的窗体或控件上。因为在窗体的 Load 事件完成前窗体或窗体上的控件是不可视的,所以如果不是在 Form_Load 事件过程完成之前首先使用 Show 方法显示窗体的话,是不能使用 SetFocus 方法将焦点移至正在自己的 Load 事件中加载的窗体的。也不能把焦点移到 Enabled 属性被设置为 False 的窗体或控件。如果已在设计时将 Enabled 属性设置为 False,必须在使用 SetFocus 方法使其接收焦点前将 Enabled 属性设置为 True。
我们看下面的实测代码,如下所示。
Private Sub CommandButton1_Click()
If TextBox1.Text <> "" And TextBox2.Text <> "" Then
Sheets("sheet11").Range("a65536").End(xlUp).Offset(1, 0) = TextBox1.Text
TextBox1.Text = ""
Sheets("sheet11").Range("a65536").End(xlUp).Offset(0, 1) = TextBox2.Text
TextBox2.Text = ""
TextBox1.SetFocus
Else
If TextBox1.Text = "" And TextBox2.Text <> "" Then
MsgBox "录入数据1为空,请输入正确的数字!"
TextBox1.SetFocus
End If
If TextBox1.Text <> "" And TextBox2.Text = "" Then
MsgBox "录入数据2为空,请输入正确的数字!"
TextBox2.SetFocus
End If
If TextBox1.Text = "" And TextBox2.Text = "" Then
MsgBox "录入数据1和2均为空,请输入正确的数字!"
TextBox1.SetFocus
End If
End If
End Sub
代码解析:输入按钮的Click事件,把文本框数据录入到工作表A列最后一个单元格中并重新选择文本框准备下一次输入。
第2行代码,在输入到工作表前检查文本框是否为空。
第3、4、5、6行代码,如果文本框不为空,录入数据到工作表并清空文本框内容。
第7行代码,使用SetFocus方法将光标返回到文本框1中以便重新输入。
后续的代码不再讲解,请读者自己分析。
代码截图:
窗体截图:
运行截图:
点击录入工作表:
如果某文本框为空:
今日内容回向:
1 今日讲解的使控件获得焦点的方法是什么?
2 数据是如何录入到工作表的?(之前有朋友问到此问题,请留意代码)