查找带有表格的工作表名称

我正在试图find具有特定表名称的表名。 例如:

Set sheetNM = ActiveWorkbook.Names("ratetable").RefersToRange.Parent.Name 

类似的东西,但会拉的工作表的名称,所以我可以激活该表,以便从中获取信息。

您可以使用错误陷印来查找包含具有给定名称的表格的工作表:

 Function FindTableSheet(TableName As String) As String Dim ws As Worksheet Dim LO As ListObject Dim shName As String For Each ws In Sheets On Error Resume Next Set LO = ws.ListObjects(TableName) If Err.Number = 0 Then FindTableSheet = ws.Name Exit Function Else Err.Clear End If Next ws FindTableSheet = "Not Found" End Function 

为了testing它,我命名了一张“数据”表,并为该表添加了一个名为“速率表”的表格。 但是,我没有创build任何名为“乒乓球”的桌子。 然后我跑了:

 Sub test() Debug.Print FindTableSheet("ratetable") Debug.Print FindTableSheet("table tennis") End Sub 

输出:

 Data Not Found 

这不是我推荐的,但是当你引用ActiveWorkbook的时候 ,你可以放下ActiveWorkbook并简单地检索它,

 dim pws as worksheet, sws as string sws = range("ratetable").parent.name set pws = range("ratetable").parent debug.print sws & " - " & pws.name 

在“公式”►“名称pipe理器”中列出结构化表(也称为ListObject对象 )时,它不具有定义名称的所有属性。 不幸的是,所有你可以用名称做的事,你不能总是用ListObject作为ListObject的父对象,而是工作表对象,而不是工作簿。

我知道这个post是旧的,但对于它的价值,我认为OP是在正确的轨道(寻找父母的名字)与您最初发布的初始代码。 调用表的父母为我工作:

 ActiveSheet.ListObjects("TableName").Parent.Name