Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.Intersect(Target, Range("$B:$B")) Is Nothing Then
Me.Calendar1.Visible = False
Exit Sub
Else
Me.Calendar1.Visible = True
End If
Me.Calendar1.Left = ActiveCell.Left + ActiveCell.Width
Me.Calendar1.Top = ActiveCell.Top
End Sub
This will ensure that the calendar control will be visible only if the cursor is in column B.
The point Luke was making is that to go from the worksheet cell to the calendar control requires you to click on the calendar control ; once you do this , you can again use the keyboard cursor control keys to move between the days on the calendar control. But to enter the chosen date into the active cell requires you to add the following code also :
Private Sub Calendar1_Click()
ActiveCell.Value = Me.Calendar1.Value
End Sub