簡體   English   中英

用於將數據字段從Workbook1填充到Workbook 2的宏

[英]Macro to populate data fields from Workbook1 into Workbook 2

我希望有人可以為我提供一些我一直在努力的代碼的幫助。

基本上,我想做的是從工作簿1復制某些數據並將其復制到工作簿2。

我要復制的數據從工作簿1中的單元格A9開始,並且該范圍是動態的。 因此,例如,它可能從A9開始,並有10個值,范圍一直到A18,但這一直在變化,因此我需要確保循環在到達列A的最后一個值時停止。

我已經測試了以下代碼,並且已成功將A9復制到A2。 現在,我正在嘗試找出如何修改代碼的方法,以便它使用循環從A9-An復制所有動態值。

TWBWS.Range("A2").Value = OWBWS.Range("A9").Value

以下是到目前為止我嘗試過的。

Sub PopulateFields()

Workbooks("BUPA_LHC_Reconciliation_20171018204045.xlsx").Activate
Workbooks("BUPA_LHC_Reconciliation_20171018204045.xlsx").Worksheets("Unconfirmed").Activate

Dim twbrow_number As Integer
Dim owbrow_number As Integer
Dim OWBLastRow As Integer
Dim TWB As Workbook 'This workbook
Dim OWB As Workbook 'Other workbook
Dim TWBWS As Worksheet 'Data
Dim OWBWS As Worksheet 'Report worksheet, in OWB

owbrow_number = 8
twbrow_number = 1

Set TWB = Workbooks("LHC Report Email test v1.0.xlsm")
Set OWB = Workbooks("BUPA_LHC_Reconciliation_20171018204045.xlsx")
Set TWBWS = TWB.Worksheets("Sheet1")
Set OWBWS = OWB.Worksheets("Unconfirmed")

OWBLastRow = OWBWS.Cells(Rows.Count, 1).End(xlUp).Row - 2


Do
DoEvents

owbrow_number = owbrow_number + 1
twbrow_number = twbrownumber + 1

TWBWS.Range(Cells(twbrow_number, 1)).Value = OWBWS.Range(Cells(owbrow_number, 1)).Value

Loop Until owbrow_number = OWBLastRow

End Sub

將代碼的最后部分替換為:

    OWBLastRow = OWBWS.Cells(OWBWS.Rows.Count, "A").End(xlUp).Row - 2

    TWBWS.Cells(2, "A").Resize(OWBLastRow - 8, 1).Value = OWBWS.Cells(9, "A").Resize(OWBLastRow - 8, 1).Value    

End Sub

一口氣就能復制整個范圍。


復制值的語句也可以重寫為

TWBWS.Range("A2:A" & OWBLastRow - 7).Value = OWBWS.Range("A9:A" & OWBLastRow).Value    

如果您使用以下方法,則循環方法將奏效:

TWBWS.Cells(twbrow_number, 1).Value = OWBWS.Cells(owbrow_number, 1).Value

您的問題是您不能僅將單個單元格引用作為參數傳遞給Range 它要么是兩個單元格引用(定義左上角和右下角),要么是指定地址的字符串,或者是指定范圍名稱的字符串。

暫無
暫無

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

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