This is one option
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Union(Range("$B$1:$BA$100"), Target).Address = Range("$B$1:$BA$100").Address Then
        If Target.Value = 0 Then Target.EntireColumn.Hidden = True
    End If
End Sub