Проблема с Intersect в именованном диапазоне в цикле For - PullRequest
0 голосов
/ 05 февраля 2019

Проблема с пересечением выделения активной ячейки с именованным диапазоном в цикле.Логика заключается в том, что если есть пересечение в двух диапазонах, установите диапазон «RR» равным диапазону с именем переменной.Вот соответствующий код.Предположим, что я правильно определил размеры всех переменных:

Set R1 = Range("B2:AB4")
Set R2 = Range("B5:AB7")
Set R3 = Range("B8:AB10")
.
.
.
Set R9 = Range("B26:AB28")

Set AC = Selection

For i = 1 To 9
    If Not Intersect(AC, Range("R" & i)) Is Nothing Then
        Set RR = Range("R" & i)
    End If
Next i

Следующий шаг не обязательно включать в вышеупомянутый, поскольку я делаю то же самое с определенными диапазонами столбцов (C1, C2, C3 .... C9) исохранить указанную переменную столбца пересечения как "CC" - такой же базовый цикл.Наконец, мне нужно выбрать пересечение диапазонов RR и CC для последующих шагов.

Я уверен, что это простая синтаксическая ошибка или фундаментальное недопонимание объектов Excel, но я застрял.Помощь

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Альтернативой может быть использование одного диапазона (ограничение 255 символов) и доступ к индивидуальному .Areas:

Set Ranges = Range("B2:AB4,B5:AB7,B8:AB10, ... ,B26:AB28")

For Each area in Ranges.Areas
    If Not Intersect(Selection, area) Is Nothing Then
        Set RR = area
    End If
Next i
0 голосов
/ 05 февраля 2019

Вы должны использовать коллекцию.Это позволит вам получить доступ к вашим пользовательским диапазонам:

Sub test()

    Dim col As New Collection

    Set R1 = Range("B2:AB4")   'OR   col.add Range("B2:AB4"), R1
    Set R2 = Range("B5:AB7")   'OR   col.add Range("B5:AB7"), R2
    Set R3 = Range("B8:AB10")  'OR   col.add Range("B8:AB10"), R3
    '.
    '.
    '.
    Set R9 = Range("B26:AB28") 'OR   col.add Range("B26:AB28"), R9


    col.Add R1, "R1"
    col.Add R2, "R2"
    col.Add R3, "R3"
    col.Add R4, "R4"
    col.Add R5, "R5"
    col.Add R6, "R6"
    col.Add R7, "R7"
    col.Add R8, "R8"
    col.Add R9, "R9"


    Set AC = Selection

    For i = 1 To 9
        If Not Intersect(AC, col("R" & i)) Is Nothing Then
            Set RR = col("R" & i)
        End If
    Next i

    Set col = Nothing

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...