确定ActiveCell是否在特定的表中

我想通过VBA在Excel 2013中确定ActiveCell是否不在任何表中,而是在特定的表中。

下面是代码原样,但只检测任何表中的ActiveCell。 注释掉的线是我正在寻找,但显然这是行不通的。

     ...
    设置rng =相交(.EntireRow,ActiveCell.ListObject.DataBodyRange)
     'Set rng = Intersect(.EntireRow,ActiveCell.ListObjects(“myTable”).DataBodyRange)
    在错误转到0
        如果rng没有那么
             MsgBox“请在共识input表中select一行的单元格”,vbCritical,“Delete Evaluator”
        其他
     ...

任何build议在这个正确的语法?

谢谢!

要testingActiveCell是否在Table1的主体中:

 Sub qwerty() If Intersect(ActiveCell, ActiveSheet.ListObjects("Table1").DataBodyRange) Is Nothing Then MsgBox "activecell not in Table1" Else MsgBox "activecell in Table1" End If End Sub 

更通用的解决scheme,适用于其他表格

 Sub Demo() Dim r As Range Dim lo As ListObject Set r = ActiveCell Set lo = r.ListObject If Not lo Is Nothing Then Select Case lo.Name Case "Table1" If r.Row = lo.Range.Row Then MsgBox "In Table1 Header" Else MsgBox "In Table1 Body" End If Case "SomeOtherTable" '... End Select Else MsgBox "Not in any table" End If End Sub 

一般来说,我们感兴趣的是在一个表格的DataBodyRange中执行的工作,Excel为我们提供了一个表格区域的快捷方式。 对于名为“myTable”的表,可以使用[myTable]直接访问代码中的[myTable]

因此,对于包含ActiveCell的表格位置testing,可以testing如下:

 If Not Intersect(ActiveCell, [myTable]) Is Nothing Then