【问题标题】:How do I copy and paste values and formats to a new worksheet using VBA如何使用 VBA 将值和格式复制并粘贴到新工作表
【发布时间】:2019-10-28 14:41:12
【问题描述】:

我正在尝试将 Sheet1 中的值和格式复制到 Sheet2,但我运气不佳。代码工作正常,但只粘贴值

我尝试将 xlPasteFormats 与 xlPasteValues 一起使用,但我不断收到错误。

    Private Sub TransferButton_Click()
    Application.ScreenUpdating = False
      Dim copySheet As Worksheet
      Dim pasteSheet As Worksheet

      Set copySheet = Worksheets("Sheet1")
      Set pasteSheet = Worksheets("Sheet2")


  copySheet.Range("A1:G29").Copy

  pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial 
  Paste:=xlPasteAll
  pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial 
  Paste:=xlPasteColumnWidths

  Application.CutCopyMode = False
  Application.ScreenUpdating = True

      Range("D5").Value = Range("D5").Value + 1

        Range("A8").ClearContents
        Range("B8").ClearContents
        Range("C8").ClearContents
        Range("D8").ClearContents
        Range("A10").ClearContents
        Range("A13").ClearContents
        Range("B13").ClearContents
        Range("C13").ClearContents
        Range("D13").ClearContents
        Range("A15").ClearContents
        Range("B15").ClearContents
        Range("C15").ClearContents
        Range("C15").ClearContents
        Range("A17").ClearContents
        Range("C17").ClearContents
        Range("A20:D24").ClearContents
        Range("D25").ClearContents
        Range("A28").ClearContents
        Range("B28").ClearContents
        Range("C28").ClearContents

    End Sub

我希望将 sheet1 中的粘贴范围复制并粘贴到具有相同值、颜色、字体(格式)等的 sheet 2 中

【问题讨论】:

  • “我尝试将 xlPasteFormats 与 xlPasteValues 一起使用” - 你能展示一下你是如何尝试的吗?
  • @BigBen 我尝试这样做如下所示: copySheet.Range("A1:G29").Copy pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) .PasteSpecial xlPasteValues .PasteSpecial xlPasteFormats
  • @Whitena 你能添加editing your question的代码吗?否则可能很难解析
  • @cybernetic.nomad 修正

标签: excel vba


【解决方案1】:
  Dim copySheet As Worksheet
  Dim pasteSheet As Worksheet

  Set copySheet = Worksheets("Sheet1")
  Set pasteSheet = Worksheets("Sheet2")

  copySheet.Range("A1:G29").Copy
  With pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        .PasteSpecial xlPasteColumnWidths
        .PasteSpecial xlPasteValues
        .PasteSpecial xlPasteFormats
  End With

'You can assign the height of a row to different rows if xlPasteFormats does not do it for you
      height = copySheet.Range("A5").Height
      pasteSheet.Range("A1:G29").RowHeight = height

     End Sub

【讨论】:

  • 这可行,但它没有从 Sheet1 设置单元格的宽度或高度。此外,它还引入了从 sheet1 到 sheet2 的任何公式。
  • 不工作,我只是在一段 VBA 代码之后,每次运行代码后,它可以简单地放置一个分页符。基本上将其视为发票,复制发票并将其粘贴到新行中,但添加一个分页符,以便在我们打印时它将包含发票上的所有格式和正确详细信息,并且不会重叠发票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多