VBA:将数据复制到 table 时出现错误 1004 合并单元格
VBA: Error 1004 merged cells when copying data into a table
objective是将一定范围的数据复制到预先存在的table中,其中table首先删除旧数据。我有额外的代码,但这是处理 table 数据的代码部分。
重要说明:我正在复制的范围 NOT 包含合并的单元格。我已经检查并仔细检查了。
但是,如果重要的话,在我粘贴的 table 正下方有合并的单元格。
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
保持格式化而不覆盖我的单元格。
使用
NewData.Copy
tbl.DataBodyRange(1, 1).PasteSpecial
并取消合并我的 table 作品下方的单元格。另外,我在 with tbl
子句中添加了 .listrows.add
行。
objective是将一定范围的数据复制到预先存在的table中,其中table首先删除旧数据。我有额外的代码,但这是处理 table 数据的代码部分。 重要说明:我正在复制的范围 NOT 包含合并的单元格。我已经检查并仔细检查了。 但是,如果重要的话,在我粘贴的 table 正下方有合并的单元格。
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
保持格式化而不覆盖我的单元格。
使用
NewData.Copy
tbl.DataBodyRange(1, 1).PasteSpecial
并取消合并我的 table 作品下方的单元格。另外,我在 with tbl
子句中添加了 .listrows.add
行。