Страницы: 1
RSS
VBA. Номер области в коллекции Areas, Определить номер области в коллекции Areas диапазона для ячейки
 
Здравствуйте коллеги!
В приложенном файле, в диапазоне '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
Файл слямзил в ЭТОЙ теме, да простит меня TiduSan  :)  
Изменено: Sanja - 19.01.2018 20:53:56
Согласие есть продукт при полном непротивлении сторон
 
В общем случае - никак, в данном случае области упорядочены, так что из номера строки и столбца можно вычислить номер области.
 
Понятно. Спасибо
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Наверх