Excel 添加到集合中的值会重复多次

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

我有一个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.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