活动单元选择与循环内变量名为范围相交的问题。逻辑是,如果两个范围内有一个相交,则将“ 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对象的基本误解,但我被卡住了。帮助吗?
答案 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