Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA运行时错误1004“一个表不能与另一个表重叠”_Vba_Excel_Error Handling_Runtime Error - Fatal编程技术网

Excel VBA运行时错误1004“一个表不能与另一个表重叠”

Excel VBA运行时错误1004“一个表不能与另一个表重叠”,vba,excel,error-handling,runtime-error,Vba,Excel,Error Handling,Runtime Error,每次打开xlsm文件时都会发生此运行时错误,即一个表不能与另一个表重叠。单击调试窗口后,下面一行VBA代码高亮显示 Set tbl = Sheets("DataSheet").ListObjects.Add(xlSrcRange, rng, , xlYes) 以下附上完整版本仅供参考 Private Sub Workbook_Open() Dim tbl As ListObject Dim rng As Range 'Ungroup worksheets Th

每次打开xlsm文件时都会发生此运行时错误,即一个表不能与另一个表重叠。单击调试窗口后,下面一行VBA代码高亮显示

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

那么我应该怎么做来解决这个问题呢?为什么在那一行上出现错误

您可以在添加表之前调用此函数,或将其修改为更具体:

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

注意:tbl.Unlist将使表格进入正常范围,但保留数据,tbl.Delete将删除表格,并删除表格中的数据。

您可以在添加表格之前调用此选项,或将其修改为更具体的选项:

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

注意:tbl.Unlist将使表格进入正常范围,但保留数据,tbl.Delete将删除表格并删除表格中的数据。

以下是我最终得出的解决方案。似乎正在解决这个问题

    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

下面是我最终得到的解决方案。似乎正在解决这个问题

    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

是的,这也正是我想到的。谢谢你的快速回答。另外,我刚刚添加了一个条件来检查表是否已经存在。是的,这也是我所想到的。谢谢你的快速回答。另外,我只是添加了条件来检查表是否已经存在。