Not saying it's the best way, but here is a way...use the worksheet_calculate event like this:
Private Sub Worksheet_Calculate()
VIS.Visible = Not Range("M1").Value
End Sub
I went with this method because it fits with your current sheet design and the logic you have laid out. If you'd like an alternative method, I'd be more than happy to provide one. Either way, I hope it gets you going in the right direction!
Ok, I couldn't resist. Here's another method using the Worksheet_Change event:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$J$1" Then VIS.Visible = Application.WorksheetFunction.CountA(Range("J1"))
Application.EnableEvents = True
End Sub
The benefit of the worksheet_change event is, you can get rid of the formula you have in M1. Depending on your sheet layout, the Application.EnableEvents = False may not be necessary..but doesn't really hurt having it in there just in case.