Здравствуйте коллеги! В приложенном файле, в диапазоне 'DAYS', 12 несмежных областей. Как определить номер области, в которую попадает, допустим, активная ячейка, без перебора областей, коллекции Areas, этого диапазона? Код с определением номера в цикле
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("DAYS")) Is Nothing And Target.Count = 1 Then
On Error Resume Next
For I = 1 To Range("DAYS").Areas.Count
If Not Intersect(Target, Range("DAYS").Areas(I)) Is Nothing Then
iMonth = I
Select Case I
Case 1, 3, 5, 7, 8, 10, 12
eDay = 31
Case 4, 6, 9, 11
eDay = 30
Case 2
eDay = 28 'для високосного года исправить на 29
End Select
Exit For
End If
Next
Application.ScreenUpdating = False
Application.EnableEvents = False
If Target >= 1 And Target <= eDay Then
Target = DateSerial(2018, iMonth, Target)
Target.NumberFormat = "dd; @"
Else
MsgBox "Неверная дата!", vbCritical + vbOKOnly, "Ошибка"
Target = Empty
GoTo ExitSub
End If
End If
ExitSub:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub