簡體   English   中英

使用目標工作簿中的最后一行計算作為源工作簿中的行值范圍

[英]use a last row calculation from a destination workbook as a row value range in a source workbook

對不起,我的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

您還需要計算記錄保留表的最后一行,並使用該行作為目標(而不是源工作表的最后一行)來設置.Copy操作:

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用於目標工作表...

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM