【问题标题】:VBA message box with a list of failed checks带有失败检查列表的 VBA 消息框
【发布时间】:2016-06-22 11:03:07
【问题描述】:

如何创建一个消息框来显示所有未填写的必填字段。

我正在使用一个带有自动过滤器的表(“Table11”)来仅显示失败的检查。

我想将这些翻译成一个消息框,显示销售代理何时尝试创建合同。

下面的表格布局:

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 老实说,我没有尝试过任何事情,因为我不知道从哪里开始,我能想到的最好的方法是MsgBox " Please complete the following mandatory fields:" & vbNewLine & "Customer Name",但这不会循环遍历列表并添加每个项目直到找到一个空白单元格然后停止
  • documentation 开头。您可以通过将 for...nextMsgBox 组合来解决此问题。
  • 我不打算回答这个问题,因为你没有表现出任何现有的努力,但你的 cmets 显示了一些想法。为获得最佳结果,请务必尝试一下并解释您的问题以及您希望如何获得帮助。

标签: vba list msgbox


【解决方案1】:

以下示例通过Table11 并创建所有标有“检查”的列表,如果有项目,则显示一条消息。

Public Sub Sample()
Dim LngCounter  As Long
Dim Tbl         As Excel.Range
Dim StrMsg      As String

Set Tbl = ThisWorkbook.Worksheets("Sheet1").Range("Table11")
    For LngCounter = 2 To Tbl.Rows.Count
        If Trim(UCase(Tbl.Cells(LngCounter, 2))) = "CHECK" Then
            StrMsg = StrMsg & Tbl.Cells(LngCounter, 1) & vbNewLine
        End If
    Next
Set Tbl = Nothing

If StrMsg <> "" Then
    MsgBox "The following items need attention before continuing: - " & vbNewLine & vbNewLine & StrMsg, vbOKOnly + vbExclamation, "Data Validation"
End If

End Sub

【讨论】:

    【解决方案2】:

    这假设 CHECK 意味着有问题

    Sub ErrorMessage()
    Dim strErrMsg As String
    Dim cell As Range
    If Application.CountIf(-yourfilteredrangehere-), "CHECK") = 0 Then Exit Sub
    'no problems to output
    For Each cell In Range(-yourfilteredrangehere-)
        'next line assumes checkitem in previous column, change if not
        If cell = "check" Then strErrMsg = strErrMsg & "Please check " & cell.Offset(0, -1) & vbCrLf
    Next cell
    MsgBox strErrMsg
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-27
      • 2019-12-28
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多