查找带有表格的工作表名称
我正在试图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