before_print宏检查必填字段不为空

时间:2014-05-08 18:07:33

标签: excel-vba vba excel

我有以下宏来执行before_print检查。必须填充某些字段才能供用户打印模板。宏工作正常,但消息框将出现多次,因为有一个空白字段。意味着如果5个字段中的3个为空白,则消息框将出现(3)次,这意味着用户必须关闭每个消息框。

问题:我希望看到我需要修改的内容,以便消息框只出现一次,无论有多少必填字段留空。我关心的是,如果任何字段为空白,则显示消息框并取消打印作业。

Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "Template" Then

Dim jRange As Range
Set jRange = Sheets("Template").Range("C4,C5,B9,B10,B11")


For Each cell In jRange

    If cell.Value = "" Then
        MsgBox ("Cannot leave Invoice Number, Invoice Date or Vendor Name blank."), vbCritical
        Cancel = True

    End If
Next


End If


End Sub

协助后修改宏:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "Template" Then

Dim jRange As Range
Set jRange = Sheets("Template").Range("C4,C5,B9,B8,B10")


Dim ReqFields As Boolean

For Each cell In jRange

    If cell.Value = "" Then
        ReqFields = True

    End If
Next

If ReqFields Then

MsgBox ("Cannot leave Invoice Number, Invoice Date or Vendor Name blank."), vbCritical
        Cancel = True
End If

End If

End Sub

1 个答案:

答案 0 :(得分:1)

不是每次循环显示MsgBox,而是将布尔变量设置为“True”。在循环之后,如果布尔值为true,那么您知道至少有一个字段为空。此时,显示您的错误消息并设置“取消=真”。