Excel 添加到集合中的值会重复多次
我有一个control.names集合,我希望将其填充到msgbox中,以便在某个控件为空时通知用户Excel 添加到集合中的值会重复多次,excel,vba,Excel,Vba,我有一个control.names集合,我希望将其填充到msgbox中,以便在某个控件为空时通知用户 Private Sub CommandButton1_Click() Dim icontrol As Control Dim colBlankFields As New Collection Dim i As Long For i = 0 To Me.MultiPage1.Pages.Count For Each icontrol In Me.C
Private Sub CommandButton1_Click()
Dim icontrol As Control
Dim colBlankFields As New Collection
Dim i As Long
For i = 0 To Me.MultiPage1.Pages.Count
For Each icontrol In Me.Controls
If icontrol.Visible = True Then
Select Case True
Case icontrol.Name Like "Multi*"
Case icontrol.Name Like "lbl*"
Case icontrol.Name Like "txt*"
If icontrol.Value = "" Then
colBlankFields.Add icontrol.Name
End If
Case icontrol.Name Like "opt*"
If icontrol.Value = "" Then
colBlankFields.Add icontrol.Name
End If
Case icontrol.Name Like "cmb*"
If icontrol.Value = "" Then
colBlankFields.Add icontrol.Name
End If
End Select
Else
End If
Next
Next i
If IsEmpty(colBlankFields) Then
Else
MsgBox colBlankFields
End If
End Sub
我将4个字段留空,这是我得到的列列表(它不断重复)
有什么想法吗
For Each icontrol In Me.Controls
在整个表单上的每个控件上循环,因此,如果将此作为内部循环,它将循环每个控件乘以您拥有的页数
For Each icontrol In Me.MultiPage1.Pages(i).Controls
可能是您想要的内部循环,因此您只需在每个页面上循环控件。您是否希望前3行
大小写行一起循环?在VBA中执行不会“失败”,因此,前两个Case
检查不会做任何事情。如果循环中的当前控件与like操作符中的控件名称不一致,我希望它们跳过,如果这样做有意义的话OK,但是在这种情况下,您不需要这两行-默认情况下,不包括的任何内容都不会被选中。因此,它会运行,我确保在最后一页(I=6)上只留下一个空白值,并且我在这一行中得到一个无效的调用/过程错误,对于我的每个icontrol.MultiPage1.Pages(I).Controls
这是I=0给我的最后一页。MultiPage1.Pages.Count
-这里Count
将比最后一页的索引多一个(因为它是基于零的)所以您需要使用Count-1