在工作簿中带有数据透视表的工作表上有一个按钮,名为“ Warranty Template.xlsm”。我希望此按钮复制从A5开始的第一列数据,并将该列粘贴到另一个名为“ QA Matrix Template.xlsm”的工作簿中。我希望复制的数据在列的最后空白行结束,并且我希望粘贴的范围也要粘贴到从D12开始的第一行空白。
Sub InsertData()
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("Warranty Template.xlsm").Worksheets("PivotTable")
Set wsDest = Workbooks("QA Matrix Template.xlsm").Worksheets("Plant Sheet")
'1. Find last used row in the copy range based on data in column A
lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "A5").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, "D12").End(xlUp).Offset(1).Row
'3. Copy & Paste Data
wsCopy.Range("A5" & lCopyLastRow).Copy _
wsDest.Range("D12" & lDestLastRow)
End Sub
我收到下标错误:“ 1004”,我不确定为什么。它与我的lCopyLastRow
和lDestLastRow
变量有关。如果我设置静态范围,但我需要这些范围是动态的,则代码可以正常工作。
答案 0 :(得分:2)
Sub InsertData()
Dim wsCopy As Worksheet, wsDest As Worksheet
Dim lCopyLastRow As Long, lDestLastRow As Long
'Set variables for copy and destination sheets
Set wsCopy = Workbooks("Warranty Template.xlsm").Worksheets("PivotTable")
Set wsDest = Workbooks("QA Matrix Template.xlsm").Worksheets("Plant Sheet")
'1. Find last used row in the copy range based on data in column A
lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, 1).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, 4).End(xlUp).Offset(1,0).Row
'3. Copy & Paste Data
wsCopy.Range("A5:A" & lCopyLastRow).Copy _
wsDest.Range("D" & lDestLastRow)
End Sub