And you don't need to hide ALL1's column seven times, so you could move it outside the loop. You can also simplify the code by removing the Goto method and the Selection object. For example, assuming the ranges are on the activesheet:
Code:
Private Sub CmdMon_Click()
Dim lNum As Long
ActiveSheet.Range("ALL1").EntireColumn.Hidden = True
For lNum = 1 To 7
ActiveSheet.Range("BOB" & CStr(lNum)).EntireColumn.Hidden = False
Next lNum
End Sub
The other thing I'll mention is that in XL2007+, BOB and ALL are valid column letters. I'm not sure from your post, but if you are using BOB1 etc as named ranges then you would probably be better off naming something else to avoid conflicts. If you are using them just as cell references (ie BOB is the column reference) then that's fine.