You shouldn't modify your data unless it is really necessary. In this case, you can achieve your goal by setting the NumberFormat of the cells instead.
The number format in Excel contains up to 4 part (that are separated by ";"). The first part is for positive numbers, the second is for negative numbers, the third is for 0 (and the forth for strings, but we can igore that). A possible number format would be General;General;"None": For everything except 0, the General format would apply. For 0, Excel would display None (but note that the value of the cell doesn't change, only the way it is displayed in the sheet).
Now all you have to do is:
o Go to the VBA Editor, add a Module (if you don't have any) and add the following code:
Sub ShowHideZeros()
With ThisWorkbook.Sheets("Sheet1") ' Replace with your sheet name
Dim showNone As Boolean
showNone = (.CheckBoxes(1).Value = xlOn)
Dim r as Range
' Use this to format all cells
Set r = .UsedRange
' Use this instead if you want to format only specific cells:
' Set r = .Range("A2:A100")
If showNone Then
.UsedRange.NumberFormat = "General;General;""None"""
Else
.UsedRange.NumberFormat = "General"
End If
End With
End Sub
o Place a checkbox on your sheet and give it a meaningfull text, eg Show "None" for 0. Note that there are 2 different types of checkboxes, this example assumes that you use a so called "Form-Control" (that's the upper part of the control selection).

o Right click on the checkbox and choose "Assign Macro". Select the routine ShowHideZeros.