2013-01-21 184 views
0

我有一个名为Book.a的单元名称,如果单元格在一个范围内(B1:I10),我必须检查if条件。如何操作? 我试过'相交'的方法,但没有为我工作。 请建议一些答案。VBA:如何检查单元格范围?

+0

我正在回我的评论。 :)用'intersect method'检查两个答案。 – bonCodigo

+0

该死!我张贴没有搜索!可能重复[VBA测试如果单元格在一个范围](http://stackoverflow.com/questions/5183374/vba-test-if-cell-is-in-a-range) –

回答

1

这是你想什么呢?

Option Explicit 

Sub Sample() 
    Dim rng As Range 

    With Sheets("Sheet1") 
     On Error Resume Next 
     Set rng = Application.Intersect(.Range("Book.a"), .Range("B1:I10")) 
     On Error GoTo 0 

     If Not rng Is Nothing Then 
      MsgBox "Range `Book.a` is a part of `B1:I10`" 
     Else 
      MsgBox "Range `Book.a` not found or is not a part of `B1:I10`" 
     End If 
    End With 
End Sub 
+0

我正在编辑和ddin't看到你在输入;)+1 – bonCodigo

0

似乎无法在一个范围内搜索命名范围。所以我把我的评论回来。 什么你可以试试这个:对于像book.a每个命名范围,你可以检查其地址intersect给定的主要范围 ..

Dim objName As Name 
Dim mainRange as Range 

Sheet1.Unprotect 
Set mainRange = ActiveWorkbook.Sheets(1).Range("B1:I10") 
For Each objName In ActiveWorkbook.Names 
    strName = objName.Name 
    If InStr(1, strName, "book.a", vbTextCompare) > 0 Then 
     If Intersect(objName.Address, mainRange) Is Nothing then 
     '-- not within 
     Else 
     '-- within 
     End If 
    End If 
Next 
Sheet1.Protect 
相关问题