VBA:将数据复制到表时,错误1004合并单元格

时间:2019-02-22 09:11:37

标签: excel vba excel-tables ms-error-1004

目标是将一系列数据复制到预先存在的表中,该表首先删除旧数据。我还有其他代码,但这是处理表数据的代码部分。 重要说明:我正在复制的范围包含合并的单元格。我已经检查并再次检查。 但是,如果需要的话,在要粘贴的表格正下方有合并的单元格。

Sub updateData()
   Dim ws as worksheet, Tws as worksheet
   Dim tbl as listobject
   Set ws = thisworkbook.worksheets(1)
   Set Tws = thisworkbook.Sheets(2)
   Set tbl = Ws.ListObjects(1)

                        With tbl ' Deleting data from current table in the worksheet
                            If Not .DataBodyRange Is Nothing Then
                                .DataBodyRange.Delete
                            End If
                            .ListRows.Add
                        End With
                    fr = WorksheetFunction.Match("LookUpValue", Ws.Columns(1), 0) - 3 ' First row
                    fc = 1 ' First column
                    lc = Tws.Cells(fr, fc).End(xlToRight).Column ' Last column
                    lr = Tws.Cells(fr, fc).End(xlDown).Row - 3 ' Last row
                    Set NewData = Tws.Range(Tws.Cells(fr, fc), Tws.Cells(lr, lc))
                    NewData.Copy tbl.DataBodyRange(1, 1) ' WORKING CODE (overwrites merged cells)
                    Application.CutCopyMode = False
End sub

编辑:只是为了澄清我收到的错误是运行时错误'1004':为此,所有合并的单元格必须具有相同的大小

第二次编辑:感谢@siddarth routh,我有了一个有效的代码。就个人而言,而不是NewData.Copy tbl.DataBodyRange(1, 1)可以很好地覆盖合并的单元格,我决定取消合并下面的单元格,以继续在它们之间插入行并使用行

 NewData.Copy
 tbl.DataBodyRange(1, 1).PasteSpecial

为了保持格式而不覆盖单元格。

1 个答案:

答案 0 :(得分:0)

使用

NewData.Copy
tbl.DataBodyRange(1, 1).PasteSpecial

,然后取消合并表格下方的单元格即可。另外,我在.listrows.add子句中添加了行with tbl