В кодовом модуле рабочего листа вы можете проверить с помощью Intersect
, находится ли выбор в общем календарном диапазоне, а затем использовать Range.Area
мультидиапазона для определения номера месяца:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim RelevantArea As Range
Dim Calendar As Range
Dim i As Long
Set Calendar = Me.Range _
("B03:H10,J03:P10,R03:X10," & _
"B12:H19,J12:P19,R12:X19," & _
"B21:H28,J21:P28,R21:X28," & _
"B30:H37,J30:P37,R30:X37")
Set RelevantArea = Intersect(Target, Calendar)
If Not RelevantArea Is Nothing Then
For i = 1 To Calendar.Areas.Count
If Not Intersect(Target, Calendar.Areas(i)) Is Nothing Then
MsgBox "Month " & i & " selected."
'Me.Parent.Sheets(1 + i).Activate
Exit For
End If
Next i
End If
End Sub