【问题标题】:VBA adding a list empty fields from a userform to a message boxVBA将用户表单中的列表空字段添加到消息框
【发布时间】:2014-11-06 21:33:30
【问题描述】:

我创建了一个用户表单,要求用户输入几个字符串或整数。如果未填写几个必填框,我会尝试显示一个消息框。我想列出空字段但跳过已填写的字段。如果值是整数,我知道如何执行 for 循环但大多数输入都是字符串。我想我可以用 Dim C 作为控件做一些事情,而且我知道我的消息框的总体布局,但除此之外我很难过。请帮忙,这样我就不必用六个单独的消息框编写六个单独的条件语句!

六个表单字段名称是: Proposal_Name、Date_of_Submission、cboContraact_type、Contract_Neg_Name、Contract_Neg_Number 和 Validity_Period

我想到的消息框的大致布局如下:

MsgBox "You have left the following mandatory fields empty:" & vbCrLf & vbCrLf & "Proposal_Name" & vbNewLine & "Date_of_Submission" & Chr(10) & "cboContraact_type" & Chr(10) & "Contract_Neg_Name" & Chr(10) & "Validity_Period" 

【问题讨论】:

    标签: vba ms-word msgbox


    【解决方案1】:

    由于您只关心 6 个字段,因此我不会走循环表单控件、确定控件类型、检查缺失值等的路径。

    这是一个可能适合您的命令按钮的 OnClick:

    Private Sub Command12_Click()
    
    
    Dim sMissingValues As String
    sMissingValues = ""
    
    If Nz(Me!Proposal_Name, "") = "" Then sMissingValues = sMissingValues + vbCrLf + "Proposal_Name"
    If Nz(Me!Date_of_Submission, "") = "" Then sMissingValues = sMissingValues + vbCrLf + "Date_of_Submission"
    If Nz(Me!cboContraact_type, "") = "" Then sMissingValues = sMissingValues + vbCrLf + "cboContraact_type"
    If Nz(Me!Contract_Neg_Name, "") = "" Then sMissingValues = sMissingValues + vbCrLf + "Contract_Neg_Name"
    If Nz(Me!Contract_Neg_Number, "") = "" Then sMissingValues = sMissingValues + vbCrLf     + "Contract_Neg_Number"
    If Nz(Me!Validity_Period, "") = "" Then sMissingValues = sMissingValues + vbCrLf + "Validity_Period"
    
    If sMissingValues <> "" Then
        MsgBox "You have left the following mandatory fields empty:" & vbCrLf & sMissingValues
    End If
    
    
    End Sub
    

    【讨论】:

    • 谢谢丹尼尔。我将其更改为 If Len(Me.Proposal_Name & vbNullString) = 0 Then.... 效果很好。再次感谢。
    猜你喜欢
    • 2020-05-07
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    相关资源
    最近更新 更多