api 另一窗体 之上_校验数据一旦失败,VBA代码自动控制焦点返回的另一备选方案...

大家好,我们今日继续讲解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中以便重新输入。

后续的代码不再讲解,请读者自己分析。

代码截图:

127238fdd09ea041f48a3e735a566b13.png

窗体截图:

eac68f719067893fb14b660bffabffc7.png

运行截图:

c47361cd03a212a79da5c614f10110df.png

点击录入工作表:

eaf54f3e7d1cfb457f894833f5a05051.png

如果某文本框为空:

60ca31ba5a33b2dce8bedd3ff6b2c60c.png

今日内容回向:

1 今日讲解的使控件获得焦点的方法是什么?

2 数据是如何录入到工作表的?(之前有朋友问到此问题,请留意代码)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值