[vba]Private Sub Worksheet_Change(ByVal Target As Range)
Const WS_RANGE As String = "B1:B100" '<== change to suit
If Intersect(Target, Me.Range(WS_RANGE)) Is Nothing Then
Columns("B:B").Select
Selection.EntireColumn.Hidden = True
End If
End Sub[/vba]
Put this in the code module for the sheet you want it to work on.