使用目标工作簿中的最后一行计算作为源工作簿中的行值范围

时间:2014-05-23 13:50:32

标签: excel-vba vba excel

请原谅我的VBA无知..我试图自动从源工作簿中导出所选列,该工作簿是从基于Web的源连续填充的。记录保留过程需要目标工作簿。我的问题是,简单的复制/粘贴将写入目标工作簿中的单元格。我有代码来计算我的目标表中使用的最后一行,我打电话给lastrow。我希望使用lastrow作为行值,以便我可以从源我的目标工作簿计算的lastrow开始的源工作簿中进行复制。目标是从源表中不断向目标表单添加行,而无需覆盖现有的数据行。

Sub johnson()
    Dim wb As Workbook, wbTemp As Workbook
    Dim ws As Worksheet, wsTemp As Worksheet
    Dim lastrow As Long

    Set wb = ThisWorkbook
    Set ws = wb.Sheets("Sheet1")

    Set wbTemp = Workbooks.Open("F:\Projects\Ballot Reconciliation\DRAFT 2014     
    Reconciliation spreadsheet.xlsx")
    Set wsTemp = wbTemp.Sheets("Sheet1")

    'calculate last row having been used in the destination worksheet

    lastrow = wsTemp.Range("B" & Rows.Count).End(xlUp).Row + 1

    'use lastrow as the input row value for the copy out of the source worksheet.

    ws.Range("A(lastrow):A5000").Copy wsTemp.Range("B" & lastrow)

    Application.CutCopyMode = False

    wbTemp.Close savechanges:=True
    Set wb = Nothing: Set wbTemp = Nothing
    Set ws = Nothing: Set wsTemp = Nothing

End Sub

2 个答案:

答案 0 :(得分:0)

您还需要计算记录保存表上的最后一行,并使用该作为目标设置.Copy操作(而不是源表中的最后一行):< / p>

Dim LastTargetRow As Long

'... do stuff

With wsTemp
    LastTargetRow = .Range("B" & .Rows.Count).End(xlUp).Row + 1
End With

'... do stuff

然后您只需复制到wsTemp.Range("B" & LastTargetRow)

这里有些挑剔的东西,但可能会让你更加头疼......你对调整变量名称有什么看法,以更好地表明他们的目标是什么?我可能会选择Source而不是ws来描述源数据表,DestBook表示目标工作簿,Dest表示目标工作表...

答案 1 :(得分:0)

在这里回答我自己的问题,但这就是我所做的:ws.Range("A" & lastrow & ":" & "A5000").Copy wsTemp.Range("B" & lastrow)。有效!