Option Base 1
Option Explicit
Option Private Module
'====================================================================================================
Sub Test()
Dim rng As Range, rng2 As Range
Dim x, n&
Set rng2 = Range("A1:C2")
x = Array("A1", "A2", "A1", "B1", "A1:A2", "B1:B2", "A1", "C1", "A1:A2", "C1:C2")
Debug.Print "rng1", "rng2", "rng1+rng2", "Union", "Intersect", vbLf
For n = 1 To UBound(x) Step 2
Set rng = Evaluate(x(n) & "," & x(n + 1))
Debug.Print x(n), x(n + 1), rng.Address(0, 0, xlA1), Union(Evaluate(x(n)), Evaluate(x(n + 1))).Address(0, 0, xlA1), Intersect(rng, rng2).Address(0, 0, xlA1)
Next n
End Sub
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
а в чем косяк-то? Куда смотреть? Intersect - пересечение. Т.е. на выходе имеем адреса только тех ячеек, которые пересекаются между указанными. Не нашел в приложенном примере нестыковок. Ты же "A1:C2" пытаешься "пересечь" с адресами из этого же диапазона и естественно, получаешь только те, которые совпали. Т.е. я ни фига не понял, почему ты на Intersect сейчас гонишь Ты же в Union не применяешь диапазон "A1:C2", а просто объединяешь несколько ячеек. Задай
Код
Set rng2 = Range("A2:C2")
и увидишь разницу
P.S. Код че-то вообще не рабочий, т.к. размерности массива не хватает На последнем шаге n + 1 вернет 10, а у тебя массив x = (0 to 9) что за привычка Option Base 1 использовать?
вчера в своей теме ColorScale я задал вопрос о том, что в смежных областях УФ закрашивает строки по всем смежным областям, как будто область одна (это так и было, как оказалось), хотя должен был каждой отдельно определять. Так вот пример успел увидеть только ты, т.к. я сразу нашёл некорректность в его построении, а когда стал докручивать, то и нашёл виновника: одна из моих функций запроса диапазона у пользователя "отсекает" полученный диапазон по рабочей области, чтобы далее не делать лишнюю работу в заведомо пустых ячейках — так вот я не знал и не учёл, что при Intersect'е диапазона из нескольких областей, смежные из них "схлопнутся" в одну. Собственно, тема о том, чтобы народ это учитывал и не повторял моих ошибок (ждал несколько областей и долго не мог понять, почему "приходит" только одна)
с полгода как уже прописал во всех модулях - так удобнее элементы считать. Помним про Split и другие на которые это режим не влияет. Стремлюсь к однообразию
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄