【问题标题】:VBA Excel Copy and paste values to new work with set range after last rowVBA Excel将值复制并粘贴到最后一行之后设置范围的新工作
【发布时间】:2019-01-24 18:33:13
【问题描述】:

复制和粘贴单元格范围,但仅在最后一行之后将值粘贴到新工作簿。我的复制工作表数据范围从 o3 开始到 r100。数据会改变。我想开始粘贴值的新工作簿从单元格 m13 开始。通过单击按钮,我想在空行下提取新数据。

我研究了可以复制并粘贴到不同工作簿或复制到最后一行的代码。但不是两者兼而有之。

Sub xtrnsf_to_other_wrkbook()

'Find the last used row in both sheets and copy and paste data below existing data.

Dim wsCopy As Worksheet
Dim wsDest As Worksheet
Dim lCopyLastRow As Long
Dim lDestLastRow As Long

  'Set variables for copy and destination sheets

  Set wsCopy = Workbooks("LP sort2.xlsm").Worksheets("Chalks")
  Set wsDest = Workbooks("PC.xlsm").Worksheets("Planner's Checklist")

  '1. Find last used row in the copy range based on data in column A

  lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "O").End(xlUp).Row

  '2. Find first blank row in the destination range based on data in column A

  'Offset property moves down 1 row
  lDestLastRow = wsDest.Cells(wsDest.Rows.Count, "M").End(xlUp).Offset(2).Row

  '3. Copy & Paste Data  
     wsCopy.Range("O3:R).Copy _
       wsDest.Range("M" & lDestLastRow)


End Sub

我的复制工作表数据范围从 O3 开始到 r100。数据会改变。我想开始粘贴值的新工作簿从单元格 M13 开始。通过单击按钮,我想在空行下提取新数据。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您只需要更改复制行,因为您忽略了源范围的末尾。

    选择性粘贴将复制值而不是公式。

     wsCopy.Range("O3:R" & lCopyLastRow).Copy 
     wsDest.Range("M" & lDestLastRow).pastespecial xlvalues
    

    【讨论】:

    • 我试过了,但没有任何反应?复制范围也有公式。我如何告诉它只是为了获取数据。
    • 已修改 - 立即尝试。
    • 该代码将复制该值,因此问题出在其他地方。是时候进行一些调试了!
    • 太棒了。我想到了。但我的问题是,每次我按下按钮时,我都会在 136 个空白行后得到正确的结果。我认为这与我正在复制的范围有关。有什么办法可以解决还是因为我的范围有公式?
    • 出了什么问题?您是否有返回空字符串的公式行?如果是这样,最好将它们粘贴进去,然后删除空白行。
    猜你喜欢
    • 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
    相关资源
    最近更新 更多