Userformvalidation使用循环检查空的控件

用户完成input数据后。 当用户点击提交button。 我会检查是否所有的文本框不是空的。 用户将input成员的数量,如果用户input1个成员,我将检查如果member01是空的,如果用户input3个成员,我将检查如果member01,member02,member03是空的它适用于如果其他但我想做它为循环,因为它是十分乏味的我做了10次。 我不知道如何将它从If Else更改为For Loop。

'Using If Else If txtNoMember.Value = "" Then MsgBox "Please enter the Number of Member.", vbExclamation, "Input Data" txtNoMember.SetFocus Exit Sub End If If txtNoMember.Value = 1 And txtMember01.Value = "" Then MsgBox "Member cannot be empty.", vbExclamation, "Input Data" Exit Sub End If If txtNoMember.Value = 2 And txtMember01.Value = "" And txtMember02.Value = "" Then MsgBox "Member(s) cannot be empty.", vbExclamation, "Input Data" Exit Sub ElseIf txtNoMember.Value = 2 And txtMember01.Value = "" Then MsgBox "Member(s) cannot be empty.", vbExclamation, "Input Data" Exit Sub ElseIf txtNoMember.Value = 2 And txtMember02.Value = "" Then MsgBox "Member(s) cannot be empty.", vbExclamation, "Input Data" Exit Sub End If If txtNoMember.Value = 3 And txtMember01.Value = "" Then MsgBox "Member(s) cannot be empty.", vbExclamation, "Input Data" Exit Sub ElseIf txtNoMember.Value = 3 And txtMember02.Value = "" Then MsgBox "Member(s) cannot be empty.", vbExclamation, "Input Data" Exit Sub ElseIf txtNoMember.Value = 3 And txtMember03.Value = "" Then MsgBox "Member(s) cannot be empty.", vbExclamation, "Input Data" Exit Sub MsgBox "Member(s) cannot be empty.", vbExclamation, "Input Data" Exit Sub End If 'Using Loop Dim Ctrl As Control Dim CtrlNum As Long For Each Ctrl In Me.Controls If Ctrl.Name Like "txtMember##" Then CtrlNum = CLng(Right$(Ctrl.Name, 2)) If CtrlNum.Value = "" Then MsgBox "Member(s) cannot be empty.", vbExclamation, "Input Data" End If End If Next 

你可以做这样的事情:

 Private Sub CommandButton1_Click() If txtNoMember.Value = "" Then MsgBox "Please enter the Number of Member.", vbExclamation, "Input Data" Exit Sub Else Dim v As Long, ctrl As Control v = txtNoMember.Value For i = 1 To v For Each ctrl In Controls ' loop through Controls and search for Control with the right name If ctrl.Name = "txtMember" & Format(i, "0#") Then If ctrl.Value = "" Then MsgBox "Member(s) cannot be empty.", vbExclamation, "Input Data" Exit Sub End If Exit For End If Next Next End Sub 

即使您在txtNoMember中input4,但只有txtMemberNo03为最大值,也可以使用此function。