检查除'以外的值;1';在excel列中,显示MsgBox

检查除'以外的值;1';在excel列中,显示MsgBox,excel,vba,Excel,Vba,我必须定期对包含数百行发票数据的excel电子表格进行排序。我有一个宏来按我需要的方式格式化数据。但是,我需要做的一件事是检查quantity列中是否有大于或小于“1”的金额,如果发现值大于1,则显示一个带有两个选项的MsgBox 我想做的是使用一些vba代码检查从第L2列到数据末尾的所有单元格(直到找到空白单元格)。然后,如果它发现一个不等于1的值(a-或+值),则显示一个MsgBox,并显示消息“Quantity Errors Found.Continue“Yes”“No”。如果选择“Yes

我必须定期对包含数百行发票数据的excel电子表格进行排序。我有一个宏来按我需要的方式格式化数据。但是,我需要做的一件事是检查quantity列中是否有大于或小于“1”的金额,如果发现值大于1,则显示一个带有两个选项的MsgBox

我想做的是使用一些vba代码检查从第L2列到数据末尾的所有单元格(直到找到空白单元格)。然后,如果它发现一个不等于1的值(a-或+值),则显示一个MsgBox,并显示消息“Quantity Errors Found.Continue“Yes”“No”。如果选择“Yes”,则允许宏继续将电子表格格式化为正常格式。如果选择“No”,则终止宏以修复错误

我需要“是/否”选项的原因是,在一些情况下,可以保留不同的数量。因此,当我运行宏时,我可以退出并检查值是否可以保留并再次运行,这次选择“是”并继续

感谢任何能够提供帮助和代码的人

谢谢
Ian

你可以让电子表格做一些工作。在可用的单元格中输入公式

=COUNTIF(L2:L1000,1) <>COUNTA(L2:L1000)
请注意,第一个msgbox中的参数周围有括号,但第二个参数周围没有括号——这是VBA的一个怪癖。如果将msgbox用作函数,则需要使用括号,但在将其用作子函数时则不需要


当您运行此sub时,如果在第一个msgbox中选择“否”,则自sub结束后不会发生任何其他情况。如果选择“是”,则会看到第二个msgbox,以说明执行如何正常继续。在代码中,您应该在sub的顶部有声明,两行以“answer”开头“如果值为1,则有条件地执行。谢谢John,使用单元格公式和您为msgbox建议的代码组合,我已经成功地做到了我想要的。谢谢,但是John回答了我下面的问题。
Sub EarlyStop()
    Dim answer As VbMsgBoxResult
    answer = MsgBox("Error found, continue?", vbYesNo)
    If answer = vbNo Then Exit Sub
    MsgBox "Sub continuing normally"
End Sub