设置用户窗体文本框的标记 属性
Setting Tag Property of UserForm 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
我明白了;问题不在 UserForm Activate
中。它在保存并继续代码中。我认为我没有查看足够多的 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"
我需要一些帮助来设置表单激活时用户表单中文本框的标签 属性,然后检查以确保带有 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
我明白了;问题不在 UserForm Activate
中。它在保存并继续代码中。我认为我没有查看足够多的 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"