将值从工作表中的单元格复制到一系列单元格中

时间:2015-03-12 11:21:47

标签: excel vba excel-vba

我打算执行一个宏,它将从指定的路径打开一个工作簿,并循环遍历其名称为“Januari,Februari,Mars”的工作表,以从C34中扣除该值。 C34每次都记录一个值,所以不应该改变。但是我想将它复制到当前的工作表,其中第一个目标应该是AA73,第二个目标应该是AA74等。我的代码是

Sub Test()
     Dim myHeadings
     Dim i As Long
     Dim path As String
     path = "C:\pathtofile\file.xlsx"
     Dim currentWb As Workbook
     Set currentWb = ActiveWorkbook
     Dim openWb As Workbook
     Set openWb = Workbooks.Open(path)
     Dim openWs As Worksheet

     myHeadings = Array("Januari", "Februari", "Mars")

     For i = 0 To UBound(myHeadings)
       Set openWs = openWb.Sheets("&i")

       currentWb.Sheets("Indata").Range("AA73+Application.Match(i,Array,False)").Value = openWs.Range("C34").Value

    Next i
 End Sub

然而编译器说下标超出

行的范围
Set openWs = openWb.Sheets("&i")

在这里,我试图做“我”,我和其他事情,但它没有改变。此外,我试图使用“ThisWorkbook”而不是“ActiveWorkbook”,但它也没有帮助。有没有人知道如何以更恰当的方式实现这一目标?

编辑:根据Dave的回复,它可以导入工作表。但是我收到错误:

currentWb.Sheets("Indata").Range("AA73+Application.Match(i,Array,False)").Value = openWs.Range("C34").Value

我在所述代码片段中获得自动化错误-2147221080(800401a8)。

1 个答案:

答案 0 :(得分:1)

您已将工作表名称放入数组中,因此您只需将数组中的工作表名称称为:

Set openWs = openWb.Sheets(myHeadings(i))
相关问题