我打算进行一个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
答案 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