Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 宏将数据字段从工作簿1填充到工作簿2中_Excel_Vba - Fatal编程技术网

Excel 宏将数据字段从工作簿1填充到工作簿2中

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

我希望有人能帮我写一些我一直在写的代码

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

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

我已经测试了下面的代码,它成功地将A9复制到A2。现在,我正在尝试解决如何修改代码,以便它通过一个循环复制A9-A-n中的所有动态值

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
您的问题是不能将单个单元格引用作为参数传递给
范围
。它需要是两个单元格引用(定义左上角和右下角),或者是指定地址的字符串,或者是指定范围名称的字符串