确定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