【发布时间】:2019-08-27 04:35:09
【问题描述】:
我今天刚开始学习 VBA,完全是菜鸟。我基本上只是按照这个人的指示做了奇迹:www.excelcampus.com/vba/copy-paste-another-workbook/。但是,现在我想反过来做。这意味着从 Sheet1 复制“A2:IG2”并将其粘贴到“A2:IG2”Sheet2,然后复制“A3:IG3”并将其粘贴到“A2:IG2”Sheet2。我想保持这个循环,直到我从 Sheet1 复制了所有值。
Sub Copy_Paste_Below_Last_Cell()
'Find the last used row in both sheets and copy and paste data below existing data.
'Open method requires full file path to be referenced.
Workbooks.Open "C:\Users\xxxx\OneDrive\Desktop\Sheet2.xlsx"
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("Sheet2.xlsx").Worksheets("Sheet2")
Set wsDest = Workbooks("Sheet1.xlsx").Worksheets("Sheet1")
'1. Find last used row in the copy range based on data in column A
lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "A").End(xlUp).Offset(1).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, "A").End(xlUp).Row
'3. Copy & Paste Data
wsCopy.Range("A2:IG2" & lCopyLastRow).Copy _
wsDest.Range("A" & lDestLastRow)
Workbooks("Sheet2").Close SaveChanges:=True
End Sub
上面的代码是一个我认为可以工作的修改版本,但它不是专门复制“A2:IG2”,而是复制范围 A:IG 和偏移行上的所有可用日期。
【问题讨论】:
-
你想继续循环直到什么时候?或什么条件?请编辑问题并添加具体问题的描述。
-
仅供参考 有一个名为
Sheet1/Sheet2... 的 Workbook 有点令人困惑 -
请澄清一下,您是否尝试在 sheet2 中重写范围?就像您在问题中所说的那样...
copying "A2:IG2" from Sheet1 and pasting it to "A2:IG2" Sheet2 and then copying "A3:IG3" and pasting it to "A2:IG2" Sheet2.,或者您是否尝试在 sheet1 中复制多行并将它们粘贴到 sheet2? -
@BruceWayne- 抱歉哈哈。
-
@GMalc- 不,它不是多行。就一排。您会看到,在它从 Sheet1 复制行之后,工作簿 Sheet2 将关闭。我使用 Sheet2 上的复制行将其加载到单独的第三方程序中,然后再次加载代码,打开 Sheet2 以复制 Sheet1 中的下一行数据。