自动化错误-2147221080(800401a8)

时间:2015-03-13 08:42:36

标签: excel excel-vba vba

我打算进行一个VBA宏,它返回路径引用的文件的C34的单元格值,该路径具有myHeadings中显示的工作表名称。

Sub Test()
  Dim myHeadings() As String
  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 = Split("Januari,Februari,Mars", ",")

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

    currentWb.Sheets("Indata").Range("AA" & 73+Application.Match   (myHeadings(i),Array,False)).Value = openWs.Range("C34").Value

  Next i
End Sub

然而,这会在代码片段中显示错误消息:Automation Error -2147221080(800401a8):

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

我是VBA的新手,我还没有创建一个实际可运行的宏,因此原因可能微不足道。从谷歌搜索我还没有找到解决这个特定问题的方法。

编辑一些代码以删除"数组"并更新了t

1 个答案:

答案 0 :(得分:2)

我想你想要这个:

currentWb.Sheets("Indata").Range("AA" & 73 + Application.Match(i,Array,False)) = openWs.Range("C34") 

如果结果

Application.Match(i,Array,False)

等于1,你想让AA74等于openws.Range中的任何东西(" C34"),对吧?

'&安培;'是一个连接字符,所以我们上面说的是我们采取" AA"然后计算73 + 1并将其连接到结尾。你失踪的一点就是在" AA"之后转义文字。做数值计算。

修改: -

在阅读上述艾肯的评论后,我相信您的答案应该是完全删除匹配功能:

currentWb.Sheets("Indata").Range("AA" & 73 + i + 1).Value = openWs.Range("C34").Value