循环遍历表单上的特定类型的控件(例如,所有文本框)

时间:2014-03-14 16:02:34

标签: ms-access access-vba

如何遍历表单上的所有文本框(忽略表单上可能存在的任何其他类型的控件)。

例如,我非常想做一些验证,它会给出表单上空的文本框列表。

这种方式给了我以后的意思:

Public Sub emptyFields()

    Dim txt As Control
    Dim msgText As String

    msgText = ""

    For Each txt In Me.Controls

        If _
            IsNull(txt) _
        Then

            msgText = msgText & vbCrLf & txt.Tag

        End If

    Next txt

    MsgBox "Please complete the following:" & vbCrLf & msgText    
End Sub

但是,我可以说这是循环遍历表单上其他控件的所有,因为它们在MsgBox文本中得到一个空行。

我也更喜欢使用文本框的.Caption属性,这在上述方法中似乎不可用(可能因为并非所有控件都有字幕),因此为什么我改为使用.Tag属性。

1 个答案:

答案 0 :(得分:2)

您可以检查ControlType。

Sub AllText()
Dim ctl As Control

For Each ctl In Me.Controls
    If ctl.ControlType = acTextBox Then
        Debug.Print "textbox"
    End If
Next

End Sub

只有标签具有标题属性,但是,控件的控件集合的第0项是标签,因此:

 Debug.Print ctl.Controls.Item(0).Caption