I'm surprised it does work great!
Anyway, try:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Cell As Range, NARange As Range
Set Target = Intersect(Target, Target.Parent.Rows(2))
If Not Target Is Nothing Then
For Each Cell In Target
If Cell.Value = 0 Then
Cell.EntireColumn.Hidden = True
Set NARange = Intersect(Cell.EntireColumn, Range("B3:AT137,CR3:CJ43"))
If Not NARange Is Nothing Then NARange.Formula = "=na()"
Else
Cell.EntireColumn.Hidden = False
End If
Next Cell
End If
End Sub