如果单元格包含文本,则拒绝保存

我有这个代码,拒绝并取消保存工作簿,如果一个单元格包含特定的文本。 代码工作正常,但如果我希望它拒绝保存,如果在一个范围内的某些单元格包含特定的文本,那么它是行不通的。 我的代码下面是工作:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Sheets("Sheet1").Range("A1").Value = "Fill in a comment" Then Cancel = True Response = MsgBox("Fill in a comment", vbCritical, "Error!") End If End Sub 

我试图使其工作,但不是它的代码

 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean For Each c In Sheet1.Range("A1:A5000") If c.Value = "Fill in a comment" Then Cancel = True Response = MsgBox("Fill in a comment", vbCritical, "Error!") End If Next End Sub 

你们有什么想法吗?

试试这个,而不是循环:

 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Cancel = Not Sheet1.Range("A1:A5000").Find("Fill in a comment") Is Nothing If Cancel Then MsgBox "Fill in a comment", vbCritical, "Error!" End Sub 

它使用.Find()方法来查找"Fill in a comment" ,如果它不是NothingCancel设置为True

然后,我们testingCancel的值,看看是否需要显示消息框。

这样做也可以确保你不会得到500个消息框,如果你在该范围内的500个不同的单元格中写入"Fill in a comment"