Vba 确定ActiveCell是否位于特定表中

Vba 确定ActiveCell是否位于特定表中,vba,excel,Vba,Excel,我试图通过Excel 2013中的VBA确定ActiveCell是否不仅在任何表中,而且在特定的表中 下面是代码原样,但只检测任何表中的ActiveCell。注释掉的行是我正在寻找的,但显然它不起作用 ... Set rng = Intersect(.EntireRow, ActiveCell.ListObject.DataBodyRange) 'Set rng = Intersect(.EntireRow, ActiveCell.ListObjects("myTable").D

我试图通过Excel 2013中的VBA确定ActiveCell是否不仅在任何表中,而且在特定的表中

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

... Set rng = Intersect(.EntireRow, ActiveCell.ListObject.DataBodyRange) 'Set rng = Intersect(.EntireRow, ActiveCell.ListObjects("myTable").DataBodyRange) On Error GoTo 0 If rng Is Nothing Then MsgBox "Please select the cell of a row within the consensus input table.", vbCritical, "Delete Evaluator" Else ... ... 设置rng=Intersect(.EntireRow,ActiveCell.ListObject.DataBodyRange) 'Set rng=Intersect(.EntireRow,ActiveCell.ListObjects(“myTable”).DataBodyRange) 错误转到0 如果rng不算什么,那么 MsgBox“请选择共识输入表中某行的单元格”,vbCritical,“删除计算器” 其他的 ... 有没有关于正确语法的建议

谢谢

要测试ActiveCell是否在表1的正文中:


更通用的解决方案,适用于其他表

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

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

因此,对于ActiveCell的包容性表位置测试,可以进行如下测试:

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

没有注释掉任何一行。请查看和ListObject表的。为什么要使用
ActiveCell
?这可能是非常易变的。考虑到ListObject表的DataodyRange中不存在的ActiveCell的百分比很高,也许您应该考虑一下在发生错误时希望发生什么情况?@findwindow-添加了评论,感谢您指出。这是一个很好的回答,但对于我在这里的意图来说,这太过分了,可以用更少的行完成。如果情况出现,请记住,以备将来使用。谢谢<代码>范围。ListObject就是我要找的!(我已经找了很长一段时间了,想从任何一个牢房里拿到这张桌子。)我喜欢这个。简单直观。谢谢➕1.️
If Not Intersect(ActiveCell, [myTable]) Is Nothing Then