2016-06-29 72 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 
相關問題