Excel 宏将数据字段从工作簿1填充到工作簿2中
我希望有人能帮我写一些我一直在写的代码 基本上,我试图做的是从工作簿1复制某些数据片段,并将它们复制到工作簿2中 我正在复制的数据从工作簿1中的单元格A9开始,范围是动态的。例如,它可能从A9开始,有10个值,范围一直到A18,但是这个值一直在变化,所以我需要确保循环在到达A列的最后一个值时停止 我已经测试了下面的代码,它成功地将A9复制到A2。现在,我正在尝试解决如何修改代码,以便它通过一个循环复制A9-A-n中的所有动态值Excel 宏将数据字段从工作簿1填充到工作簿2中,excel,vba,Excel,Vba,我希望有人能帮我写一些我一直在写的代码 基本上,我试图做的是从工作簿1复制某些数据片段,并将它们复制到工作簿2中 我正在复制的数据从工作簿1中的单元格A9开始,范围是动态的。例如,它可能从A9开始,有10个值,范围一直到A18,但是这个值一直在变化,所以我需要确保循环在到达A列的最后一个值时停止 我已经测试了下面的代码,它成功地将A9复制到A2。现在,我正在尝试解决如何修改代码,以便它通过一个循环复制A9-A-n中的所有动态值 TWBWS.Range("A2").Value = OWBWS.Ra
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
您的问题是不能将单个单元格引用作为参数传递给
范围
。它要么是两个单元格引用(定义左上角和右下角),要么是指定地址的字符串,要么是指定范围名称的字符串。将代码的最后一部分替换为:
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
您的问题是不能将单个单元格引用作为参数传递给范围
。它需要是两个单元格引用(定义左上角和右下角),或者是指定地址的字符串,或者是指定范围名称的字符串