遍历文本框以确认已输入所有信息

时间:2018-11-02 16:52:39

标签: vba excel-2013

我在这里浏览了很多循环帖子,不幸的是,我无法修改自己发现的内容来满足我的需求,所以我需要一些帮助。

请注意,从其他帖子中可以看到,我还是循环圈的新手。

长期以来,我的问题是,我需要在同一用户窗体上的三个不同框架中对标记值为“必需”的TextBox控件进行检查,以确保当用户尝试输入时它们已完成在同一用户窗体上的文本框中的值。如果标记为“ Required”的任何TextBoxes没有值,则需要调试打印以显示这些TextBoxes的名称。从那里,我将能够弄清楚如何将打印输出添加到msgbox。下面是我已经开始的代码,但是我在如何将每个没有值的文本框存储在变量中的问题上感到困惑,该变量可用于调试打印。

Private Sub yLPLendComp_Enter()
    Dim ctrl As Control
    Dim i As Integer

'   SET THIS TO STORE THE CTRL.NAME IF BLANK??
    i = 0

'   THIS LOOKS THROUGH EACH REQUIRED TEXTBOX (SET BY TAG VALUE)
    For Each ctrl In LP.LoanInfo.Controls
        If TypeName(ctrl) = "TextBox" Then
            If ctrl.Tag = "Required" And ctrl.Value = "" Then
                i = i + 1
                Debug.Print ctrl.Name
        End If
    Next ctrl
'   IF THE VALUES ARE BLANK THEN MSG BOX APPEARS AND PRINTS THE EMPTY TEXT BOX NAMES
'    If i = 1 Then
'        Debug.Print ctrl.Name
'        MsgBox "Not all fields that need to be completed are complete please complete your required fields.", vbCritical, UCase("error")
'    End If
End Sub

1 个答案:

答案 0 :(得分:1)

类似这样的东西:

Private Sub yLPLendComp_Enter()

    Dim ctrl As Control
    Dim msg As String, sep

    For Each ctrl In LP.LoanInfo.Controls
        If TypeName(ctrl) = "TextBox" Then
            If ctrl.Tag = "Required" And ctrl.Value = "" Then
                msg = msg & sep & ctrl.Name
                sep = vbLf
            End if
        End If
    Next ctrl

    If Len(msg) > 0 Then
        MsgBox "One or more required fields need to be completed" & vbLf & msg, _
                 vbCritical, "Missing Information"
    End If
End Sub

如果控件名称不是用户友好的,则可以使用Tag之类的值,例如“ Required:User Friendly Name Here”,然后检查

If ctrl.Tag Like "Required:*"

然后

msg = msg & sep & Replace(ctrl.Tag, "Required:","")

编辑:使用链接标签中的文字

msg = msg & sep & Me.Controls("Label_" & ctrl.Name).Caption