2016-05-18 12 views
0

セルに特定のテキストが含まれている場合、ブックを保存することを拒否し、取り消すこのコードがあります。コードは正常に動作していますが、範囲内のいくつかのセルに特定のテキストが含まれていると保存を拒否したい場合は、それが機能していません。私はそれを動作させることを試みたコードセルにテキストが含まれている場合、セルを拒否して保存します。

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 

君たちがどんな考えを持っています。その下の私のコードが動作していますか?

答えて

1

むしろループよりも、代わりにこれを試してみてください:

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 

それは"Fill in a comment"を探すために.Find()メソッドを使用し、それがNothingでないならば、Cancelが続いTrue

に設定されている、我々は値をテストCancelを入力して、メッセージボックスを表示する必要があるかどうかを確認します。

このようにすると、"Fill in a comment"が500個の異なるセルに書き込まれている場合、500個のメッセージボックスが表示されなくなります。

関連する問題