So you want the macro to execute all of that when any cell in the sheet is changed? Most would just fire it for one cell or a range of cells. One uses Intersect() to limit execution in that case.
If that above is true, I suspect that you want to just reset sheets for that one cell changed. You can code it to each cell if in the Intersect() range.
To use the approach that I detailed, one would probably just want to execute a specific Case for one cell changed or Default (Case Else) to something else if that cell was in a range but not a specific Case. e.g.
Sub ken()
Dim Target As Range
Set Target = Range("A1")
Select Case True
Case ActiveCell.Address = Target.Address And Target.Value = ""
MsgBox ActiveCell.Address & " is empty."
Case Else
MsgBox ActiveCell.Address & " is not empty or activecell is not A1."
End Select
End Sub
Of course you can have as many "Case"s as you like.
Bookmarks