macros将工作簿1中的数据字段填充到工作簿2中

我希望有人可以帮我一些我一直在努力的代码。

基本上我试图做的是从工作簿1复制某些数据片段,并将其复制到工作簿2中。

我要复制的数据从单元格A9的工作簿1开始,范围是dynamic的。 因此,例如它可能从A9开始,并且有10个值到A18,但是这一直在变化,所以我需要确保循环在到达列A的最后一个值时停止。

我已经testing了下面的代码,它成功地将A9复制到A2。 现在我正在努力研究如何修改代码,以便从循环中复制A9 – An中的所有dynamic值。

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 

将代码的最后一部分replace为:

  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 

你的问题是,你不能只将一个单元格引用作为parameter passing给Range 。 它可以是两个单元格引用(定义左上angular和右下angular),也可以是指定地址的string或指定范围名称的string。