在For循环中在变量名称范围上相交时遇到问题

时间:2019-02-05 00:17:08

标签: excel vba

活动单元选择与循环内变量名为范围相交的问题。逻辑是,如果两个范围内有一个相交,则将“ 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 :(得分:0)

您应该使用集合。这样您就可以访问自定义范围:

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

答案 1 :(得分:0)

另一种选择是使用一个范围(最多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