我试图通过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
...
对于正确的语法有什么建议吗?
谢谢你!
5条答案
按热度按时间xienkqul1#
要测试 ActiveCell 是否在 Table1 的正文中,请执行以下操作:
o7jaxewo2#
更通用的解决方案,适用于其他表
0qx6xfy63#
通常,我们对在表的DataBodyRange中执行的工作感兴趣,Excel为我们提供了表的该区域的快捷方式。对于名为“myTable”的表,您可以使用
[myTable]
在代码中直接访问DataBodyRange。因此,对于ActiveCell的包含表位置测试,可以如下进行测试:
o0lyfsai4#
Range
对象有一个ListObject
属性,该属性将返回Range的表格。您所要做的就是测试该单元格是否在任何表格中:并查看它是否在您特定表中:
就大功告成了!
比使用
Application.Intersect(...)
干净得多。chris neilsen's的回答也暗示了这一点。clj7thdc5#
我使用下面的代码行:
或sub: