For a number, it is tricky because if a numeric cell is empty
VBA will assign a default value of 0 to it, so it is hard for your VBA code to tell the difference between an entered zero and a blank numeric cell.
The following check worked for me to see if there was an actual 0 entered into the cell:
If CStr(rng.value) = "0" then
'your code here'
End If