我正在尝试找到具有特定表名的工作表名称。例如:
Set sheetNM = ActiveWorkbook.Names("ratetable").RefersToRange.Parent.Name
类似的东西,但会拉出工作表的名称,所以我可以激活该工作表以从中提取信息。
答案 0 :(得分:2)
这不是我推荐的内容,但在您引用ActiveWorkbook时,您可以删除ActiveWorkbook
并将其简单地检索为
dim pws as worksheet, sws as string
sws = range("ratetable").parent.name
set pws = range("ratetable").parent
debug.print sws & " - " & pws.name
虽然结构化表格(又名ListObject object)列在公式►名称管理器中,但它没有已定义名称的所有属性。不幸的是,使用ListObject作为ListObject父级的名称所能做的一切都是Worksheet对象,而不是工作簿。
答案 1 :(得分:1)
您可以使用错误捕获来查找包含具有给定名称的表的工作表:
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
为了测试它,我将我的一张工作表命名为“Data”,并在该工作表中添加了一个名为“ratetable”的表格。但是,我没有创建任何名为“乒乓球”的桌子。然后我跑了:
Sub test()
Debug.Print FindTableSheet("ratetable")
Debug.Print FindTableSheet("table tennis")
End Sub
输出:
Data
Not Found
答案 2 :(得分:0)
我知道这篇文章很老,但是对于它的价值,我认为OP是在正确的轨道上(寻找父名称),并带有您最初发布的初始代码。调用表的父亲为我工作:
ActiveSheet.ListObjects("TableName").Parent.Name