2016-09-20 90 views
0

這個運行時錯誤,「一個表不能重疊另一個表」,每次打開我的xlsm文件時都會發生。在點擊調試窗口後,下面一行VBA代碼被突出顯示。Excel VBA運行時錯誤1004'一個表不能重疊另一個表'

Set tbl = Sheets("DataSheet").ListObjects.Add(xlSrcRange, rng, , xlYes) 

下面附上完整版本供您參考。

Private Sub Workbook_Open() 
    Dim tbl As ListObject 
    Dim rng As Range 

    'Ungroup worksheets 
    ThisWorkbook.Sheets("DataSheet").Select 

    Set rng = Range(Range("A1"), Range("A1").SpecialCells(xlLastCell)) 
    Set tbl = Sheets("DataSheet").ListObjects.Add(xlSrcRange, rng, , xlYes) 
    tbl.Name = "ReportTable" 
    tbl.TableStyle = "TableStyleMedium7" 
End Sub 

那麼我應該怎麼做才能解決這個問題?爲什麼在那裏發生錯誤?

回答

1

以下是我結束的解決方案。似乎正在解決這個問題。

Dim tblExists As Boolean 

    'Check the same already exists 
    tblExists = False 
    For Each o In Sheets("DataSheet").ListObjects 
     If o.Name = "ReportTable" Then tblExists = True 
    Next o 

    'If exists, delete the table first 
    If (tblExists) Then 
     Sheets("DataSheet").ListObjects("ReportTable").Unlist 
    End If 
1

你可以添加表之前調用此方法,或者修改它更具體:

For Each tbl In Sheets("DataSheet").ListObjects 
    tbl.Unlist 
Next 

注:tbl.Unlist將會把錶轉換爲正常範圍,但留下的數據,tbl.Delete會刪除一個表並且還將刪除表中的數據。

+0

是的,這正是我想出來的。感謝你及時的答覆。另外,我只是添加了條件來檢查表是否已經存在。 – woodykiddy

相關問題