L oop Сквозные объекты в форме, кроме одного конкретного c Текстовое поле - PullRequest
0 голосов
/ 27 мая 2020

Я хотел бы l oop через все текстовые поля и cbo в форме, за исключением одного специального текстового поля c (которое содержит OpenArgs). Я хотел бы указать все поля, чтобы убедиться, что все они заполнены, но это несвязанная форма, и иногда в ней не будет OpenArgs.

Хотя .Value не является раскрывающимся вариантом в VBA он действительно работает, просто не считает его NULL, используя vbNullString. Я получаю n = 0

Dim ctl As Control
Dim n As Integer

n = 0

For Each ctl In Me.Controls
    If ctl.Name <> "txt_OpenARgs" Then
        Select Case ctl.ControlType
                    Case acTextBox, acComboBox ' adjust to taste
                        If ctl.Value = vbNullString  Then
                            n = n + 1
                            Debug.Print n
                        End If
        End Select
    End If
Next ctl

If n > 0 Then
    MsgBox "All fields must be populated before saving.", vbOKOnly, "Missing Data"
Else

...

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Попробуйте Nz вместо vbNullString.

Dim ctl As Control
    Dim n As Integer

    n = 0

    For Each ctl In Me.Controls
        If ctl.Name <> "txt_OpenARgs" Then
            Select Case ctl.ControlType
                        Case acTextBox, acComboBox ' adjust to taste
                            If Nz(ctl.Value,"") = "" Then
                                n = n + 1
                                Debug.Print n
                            End If
            End Select
        End If
    Next ctl

    If n > 0 Then
        MsgBox "All fields must be populated before saving.", vbOKOnly, "Missing Data"
    Else
0 голосов
/ 27 мая 2020

Мне нужно использовать:

Если ctl.Value & vbNullString = "" Тогда

...