Установка свойства тега для пользовательской формы TextBox - PullRequest
0 голосов
/ 15 ноября 2018

Мне нужна помощь с настройкой свойства тега TextBox в пользовательской форме, когда форма активируется, а затем проверка, чтобы убедиться, что текстовые поля с этим Tag соответствуют условиям при нажатии кнопки «Сохранить».Я полагаю, что проблема заключается в том, как я устанавливаю свойство тега при активации пользовательской формы, но я не удивлюсь, если что-то не так в логике кода при активации пользовательской формы.Заранее благодарим вас за помощь.

Код для активации пользовательской формы:

Private Sub UserForm_Activate()
    Dim i As Long

        For Each ctrl In UWchecklist.Controls
            Select Case TypeName(ctrl)
                Case Is = "ComboBox"
                    If ctrl.Tag = "yesno" Then
                        ctrl.RowSource = "YesNo"
                    End If
                    ctrl.Font.Size = 10
                Case Is = "TextBox"
                    ctrl.Font.Size = 10
                        For i = 1 To 30
                            If ctrl.Name = ("uwtxTB" & i) Then
                                ctrl.Tag = "Check"
                            End If
                        Next i
            End Select
        Next ctrl
End Sub

Код для нажатия кнопки «Сохранить»:

Private Sub SandCont_Click()

    For Each ctrl In UWchecklist.Controls
        If TypeName(ctrl) = "TextBox" Then
            If ctrl.Tag = "Check" Then
                If Not ctrl.Value = vbNullString And Not ctrl.Value = "X" Or Not ctrl.Value = "NA" Then
                    ctrl.Value = vbNullString
                    ctrl.BackColor = vbRed
                    MsgBox "Only a value of " & "X " & "or " & "NA " & "is allowed.", 0, "DATA ENTRY ERROR"
                End If
            End If
        End If
    Next ctrl

End Sub

1 Ответ

0 голосов
/ 15 ноября 2018

Я понял это;проблема была не в UserForm Activate.Это было в Save and Cont Code.Я не думаю, что я смотрел на достаточно условий If, поэтому я настроил Select Case, и теперь это работает.Вероятно, это не самое элегантное решение.

For Each ctrl In UWchecklist.Controls
    If ctrl.Tag = "Check" Then
        Select Case ctrl.Value
            Case Is = ""
                ctrl.BackColor = vbWhite
            Case Is = "X"
                ctrl.BackColor = vbWhite
                ctrl.Text = "X"
            Case Is = "NA"
                ctrl.BackColor = vbWhite
                ctrl.Text = "NA"
            Case Is <> "X"
                ctrl.Value = vbNullString
                ctrl.BackColor = vbRed
            Case Is <> "NA"
                ctrl.Value = vbNullString
                ctrl.BackColor = vbRed
        End Select
    End If
Next ctrl

MsgBox "Only a value of " & "X " & "or " & "NA " & "is allowed.", 0, "DATA ENTRY ERROR"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...