Maybe like this:
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = Not CheckA1
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = Not CheckA1
End Sub
Private Function CheckA1() As Boolean
Dim wks As Worksheet
For Each wks In Me.Worksheets
If wks.Range("A1").Value <> 0 Then
Application.Goto wks.Range("A1")
MsgBox Prompt:="Save or Close cancelled." & vbLf & vbLf & _
"This should be zero. Please correct.", _
Buttons:=vbOKOnly, _
Title:="Not good!"
Exit Function
End If
Next wks
CheckA1 = True
End Function
Bookmarks