VBA 包含失败检查列表的消息框
VBA message box with a list of failed checks
如何创建一个消息框来显示所有未填写的必填字段。
我正在使用一个 table,上面有一个自动过滤器 ("Table11"),只显示失败的检查。
我想将这些翻译成一个消息框,在销售代理尝试创建合同时显示。
Table布局如下:
这假设 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
下面的示例遍历 Table11
并创建所有标有 'Check' 的列表,然后如果有项目则显示一条消息。
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
如何创建一个消息框来显示所有未填写的必填字段。
我正在使用一个 table,上面有一个自动过滤器 ("Table11"),只显示失败的检查。
我想将这些翻译成一个消息框,在销售代理尝试创建合同时显示。
Table布局如下:
这假设 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
下面的示例遍历 Table11
并创建所有标有 'Check' 的列表,然后如果有项目则显示一条消息。
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