2016-06-29 74 views
0

我在Excel表中有几个表。每个表都有唯一的表名。我想知道是否存在名称为“Table123”的表格,或者不存在于当前表格中。VBA Excel使用表名检查是否存在特定的表

有人能帮我解决吗?

感谢 杰文

+0

只是循环表/形状集合复合并检查是否有任何表/形状具有所需的名称。 –

+0

我该怎么做?我如何循环一个ListObject? – Jeevan

+0

这个问题为什么用“-2”投下来? – Jeevan

回答

3
TableExists = False 
On Error GoTo Skip 
If ActiveSheet.ListObjects("Table123").Name = "Table123" Then TableExists = True 
Skip: 
    On Error GoTo 0 

此代码将工作,避免循环和错误

+0

对于非常大的数据集,这种方法比循环遍历纸张上的每个形状要快得多,并且返回的结果完全相同 – RGA

+0

运行时错误。它造成的,因为我没有在表格上只有表格形状Table123。所以你需要将它更改为'ListObjects',并且当table不在表单上时,你会得到错误。不是假的 –

+0

@LubošSuk是什么错误? – RGA

1

可以列出形状收集和这样

Sub callTableExists() 

    MsgBox tableExists("Table1", "Shapes") 

End Sub 

Function tableExists(tableName As String, sheetName As String) As Boolean 

    Dim targetSheet As Worksheet 
    Set targetSheet = Sheets(sheetName) 

    Dim tbl As ListObject 
    Dim found As Boolean 

    found = False 

    With targetSheet 

     For Each tbl In .ListObjects 
      If tbl.Name = tableName Then 
       found = True 
       Exit For 
      End If 

     Next tbl 
    End With 

    tableExists = found 

End Function 
1

这里比较的名字是一个另类功能:

Function TableExistsOnSheet(ws As Worksheet, sTableName As String) As Boolean 
    TableExistsOnSheet = ws.Evaluate("ISREF(" & sTableName & ")") 
End Function 
相关问题