做系统的时候经常遇到限制窗体中文本框为空的情况,如果逐个判断代码写起来会很慢,想了个比较简单的方法,从窗体控件的角度出发。
代码如下:
Private Sub cmdOk_Click()
Dim s As Control
Dim frm As Form
For Each s In frm
If TypeOf s Is TextBox Then
MsgBox "输入不能为空"
Exit Sub
End If
Next
End Sub
如果窗体中有一个文本框允许空,就不行了,所以还得进一步思考一下。
跟德鹏商量后得出下面这个代码:
Public Sub IsEmpty(pForm As Form) '模块中定义公有过程判断窗体中的文本框有否有为空的 Dim a As Control For Each a In pForm.Controls '对窗体中的控件逐个遍历 If a.Name = "txtSno" Then '判断控件的名称,根据名称进行操作 If a.Text = "" Then MsgBox "学号不能为空",vbOKOnly,"错误" End If ElseIf a.Name = "txtName" Then If a.Text = "" Then MsgBox "姓名不能为空","错误" End If ElseIf a.Name = "txtSex" Then If a.Text = "" Then MsgBox "性别不能为空","错误" End If ElseIf a.Name = "txtSchool" Then If a.Text = "" Then MsgBox "学校不能为空","错误" End If End If Next End Sub
然后再在窗体中调用
Private Sub cmdOk_Click() Call IsEmpty(Me) '调用模块中定义的公有过程 End Sub
如果在不同的窗体中,增加了新的文本框,那么只需在模块儿定义的过程中添加判断即可。这种方法,显得有点笨,但是也可以解决问题。
理想中的函数具有这样的功能。模块儿中的函数包含两个参数,一个是文本框控件数组,另一个是窗体控件。第一个参数接收所在窗体中,要判断的文本框,第二个参数传递具体窗体。但是在实现选择性的文本框判断的时候,就遇到麻烦了。现在还没有解决,先保留思路。
……
原文链接:https://www.f2er.com/vb/261053.html