2016-09-20 69 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

相关问题