自动化错误-2147221080(800401a8)

我打算进行一个VBAmacros,它返回的path引用的文件的C34单元格的值,该path具有在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 

但是,这会给出错误消息:代码片段中的自动化错误-2147221080(800401a8):

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

我是VBA的新手,还没有创build一个实际可运行的macros,所以原因可能是微不足道的。 从谷歌search我还没有find解决这个具体的问题。

编辑一些代码来删除“数组”和更新吨

我想你想要这个:

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

如果结果

 Application.Match(i,Array,False) 

等于1,你想让AA74等于openws.Range(“C34”)中的任何值,对吧?

'&'是一个concocuation字符,所以我们上面说的是,我们采取“AA”,然后计算73 + 1,并连接到最后。 你丢失的那一点是在“AA”之后逃离文本来进行数值计算。

编辑:-

在阅读上面的艾肯的评论之后,我相信你的答案应该是完全去除匹配function:

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