将合并单元粘贴到新工作表上的粘贴是未合并的

时间:2018-03-13 14:01:18

标签: excel vba excel-vba

我当前的宏从一页(A)复制数据,在另一页(B)中粘贴。

在第A页中,我合并了单元格,当它粘贴在B中时,这些单元格未合并。

我可以添加任何代码以确保合并的单元格不会合并吗?

这就是我试过的,

export default Controller.extend({
  isEdit: false,
  actions: {
   editTodo: function(todo) {
     this.toggleProperty('isEdit');
   },
   cancelEdit: function () {
     this.toggleProperty('isEdit');
   }
 },
})

发布新尝试的代码:

  Case paste_cx Like "*Merged Cells*" Or select_cx Like "*Print Area*" Or select_cx Like "*Box*"
        ActiveSheet.Paste
        Range(to_col_start & to_lin_start & ":" & to_col_end & to_lin_end).Copy
        Range(to_col_start & to_lin_start & ":" & to_col_end & to_lin_end).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

1 个答案:

答案 0 :(得分:2)

如果您使用宏录制器并尝试获取所需内容,您会看到xlPasteAllUsingSourceThemePasteSpecial类型,它会保留合并单元格。因此,另外添加此行。它会保持合并:

With Range(to_col_start & to_lin_start & ":" & to_col_end & to_lin_end)
    .PasteSpecial Paste:=xlPasteAllUsingSourceTheme
End With

如果您想保留这两种值和格式,请相互使用xlPasteValuesxlPasteFormats

With Range(to_col_start & to_lin_start & ":" & to_col_end & to_lin_end)
   .PasteSpecial Paste:=xlPasteValues
   .PasteSpecial Paste:=xlPasteFormats
End With

MSDN for XlPasteType Enumeration

这是一个最小的工作示例,代码从第一个工作表复制范围并将其粘贴到第二个工作表。它需要注意复制值并完全按原样粘贴合并的单元格:

Public Sub TestMe()

    Dim mySourceRng As Range
    Dim myTargetRng As Range

    Set mySourceRng = Worksheets(1).Range("A1:F10")
    Set myTargetRng = Worksheets(2).Range("A1:F10")
    mySourceRng.Copy

    With myTargetRng
       .PasteSpecial Paste:=xlPasteValues
       .PasteSpecial Paste:=xlPasteFormats
    End With

    Application.CutCopyMode = False        
End Sub