我需要在UserForm上的列表框中添加所有“Group#”本地名称
所以我可能需要一组名字或一个真正好的循环。
For Each NamedRange In ThisWorkbook.Names
If InStr(1, NamedRange.NameLocal, "Group") <> 0 Then
If Not (Application.Intersect(Range(NamedRange.NameLocal), Range("Type")) Is Nothing) Then
Main.List_Groups.AddItem NamedRange.NameLocal
End If
End If
Next
它做我需要的部分部分。它还添加更大 Type 范围的命名范围,其中我需要 中添加的名称范围范围。
提前致谢。
答案 0 :(得分:4)
您可以检查您的相交范围的地址是否是您的群组范围的地址。如果是,它完全在你的类型范围内:
所以而不是
If Not (Application.Intersect(Range(NamedRange.NameLocal), Range("Type")) Is Nothing) Then
使用
If Application.Intersect(Range(namedrange.NameLocal), Range("Type")).Address = Range(namedrange.NameLocal).Address Then
答案 1 :(得分:1)
Application.Intersect(Range(NamedRange.NameLocal),Range(&#34; Type&#34;))并非如果两个范围的任何部分重叠 - 为了证明一个包含在另一个范围内,你应该检查命名范围是否与Type上方,下方,左侧和右侧的范围重叠。 (显然,如果类型位于工作表的顶部或左侧,则可以省略一些测试。因此,添加更多if语句测试与适当范围相交 - 所以(如果测试是固定的)类似
If (Application.Intersect(Range(NamedRange.NameLocal), Range("A2:f2")) Is Nothing then
如果Test是可变的,那么顶部的范围将是
Range(cells(range("test").cells(1,1).row-1,Range("Test").cells(1,1).column), _
cells(range("test").cells(1,1).row-1,Range("Test").cells(1,1).column + range("test").columns.count -1)))