Про диапазоны
От: PavelT100 Россия  
Дата: 27.06.02 14:08
Оценка:
Объясените новичку, пожалуйста, как определить входит диапазон полностью
в какой-то другой диапазон или нет.
Например, есть заданный диапазон B5:T10. Я хочу написать функцию которая вернет истину для диапазона F6:G9 (он полностью входит в B5:T10)и ложь для диапазона J8:L13 так как он не полностью входит в
B5:T10. Мне приходит на мой короткий ум только анализировать строку
свойства Address, но это очень муторно. Должны же быть более изяшные
решения.
Re: Про диапазоны
От: fuurin  
Дата: 27.06.02 18:25
Оценка:
Здравствуйте PavelT100, Вы писали:

PT>Объясените новичку, пожалуйста, как определить входит диапазон полностью

PT>в какой-то другой диапазон или нет.

Хотя бы так:

Function Encl(r1 As Range, r2 As Range) As Boolean
    Encl = (r1.Column <= r2.Column And r1.Row <= r2.Row) And _
        (r1.Columns(r1.Columns.Count).Column >= r2.Columns(r2.Columns.Count).Column And _
        r1.Rows(r1.Rows.Count).Row >= r2.Rows(r2.Rows.Count).Row)
End Function

Sub Macro1()
    MsgBox Encl(Range("B5:T10"), Range("F6:G9"))
    MsgBox Encl(Range("B5:T10"), Range("J8:L13"))
End Sub


Смысл в том, что сравниваем верхний левый и нижний правый углы диапазонов (они ведь прямоугольные). Есть одно но — объект Range может содержать несколько выделенных областей (Areas), в данном случае проверяются только первые из них.
Garbage In Garbage Out
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.