Vba 两个不同的代码路径=不匹配

Vba 两个不同的代码路径=不匹配,vba,excel,Vba,Excel,我有一个代码需要修改,这样它可以在另一台计算机上工作。这是一个索引,匹配公式,可以得到一些注释。无论如何,我的问题是,即使只是在我的计算机上,如果我更改路径(关闭的excel文件,我的代码可以访问以查找注释)我在ws.Range…等行上有一个错配错误,如果有人知道问题出在哪里,这会让我抓狂,这会挽救我的一天 Sub Thomas() Dim ws As Worksheet Set ws = Sheets("Sheet1") Dim lr As Long

我有一个代码需要修改,这样它可以在另一台计算机上工作。这是一个索引,匹配公式,可以得到一些注释。无论如何,我的问题是,即使只是在我的计算机上,如果我更改路径(关闭的excel文件,我的代码可以访问以查找注释)我在ws.Range…等行上有一个错配错误,如果有人知道问题出在哪里,这会让我抓狂,这会挽救我的一天

    Sub Thomas()

    Dim ws As Worksheet
    Set ws = Sheets("Sheet1")
    Dim lr As Long
    Dim mnt As String, mnt2 As String
    Dim xWb As Workbook

    ThisWorkbook.UpdateLinks = xlUpdateLinksNever
    Application.DisplayAlerts = False
    mnt = InputBox("Filename")
    mnt2 = "'H:\Documents\Thomas\[" & mnt & ".xls]Sheet1'" ' Change Sheet1 to the actual tabname
    Set xWb = Workbooks.Open("\\data\home\ro\nbi\Documents\Thomas\" & mnt & ".xls")
    ActiveWindow.Visible = False
    lr = ws.Cells(Rows.Count, "B").End(xlUp).Row
    tx = Array("=INDEX(" & mnt2 & "!$G:$G,MATCH(1,(A2=" & mnt2 & "!$A:$A)*(C2=" & mnt2 & "!$C:$C),0))")
    ws.Range("H2:H" & lr).FormulaArray = tx
    ThisWorkbook.UpdateLinks = xlUpdateLinksAlways
    Application.DisplayAlerts = True
    xWb.Close savechanges:=False
    End Sub

So the first one works and this one gives me a missmatch error 


Sub Thomas3()

Dim ws As Worksheet
Set ws = Sheets("Sheet1")
Dim lr As Long
Dim mnt As String, mnt2 As String
Dim xWb As Workbook
lr = ws.Cells(Rows.Count, "B").End(xlUp).Row
ThisWorkbook.UpdateLinks = xlUpdateLinksNever
Application.DisplayAlerts = False
mnt = InputBox("Filename")
mnt2 = "'Z:\Sales\city\Thomas\client\[" & mnt & ".xls]Sheet1'" ' Change Sheet1 to the actual tabname
Set xWb = Workbooks.Open("Z:\Sales\city\Thomas\client\" & mnt & ".xls")
ActiveWindow.Visible = False
tx = Array("=INDEX(" & mnt2 & "!$G:$G,MATCH(1,(A2=" & mnt2 & "!$A:$A)*(C2=" & mnt2 & "!$C:$C),0))")
ws.Range("H2:H" & lr).FormulaArray = tx
ThisWorkbook.UpdateLinks = xlUpdateLinksAlways
Application.DisplayAlerts = True
xWb.Close savechanges:=False
End Sub

如果您单步查看代码,当您进入
ws.Range(“H2:H”&lr)
时,
lr
的值是多少?@Xabier lr=270@Xabier但是,即时面板中的tx给了我错误匹配我从来没有真正使用过数组公式,所以我不是100%确定,但老实说,你想要实现的目标不需要数组公式,我不认为。。。尝试添加以下行而不是您的ws.Range,
ws.Range(“H2:H”和lr.Formula=“=INDEX”(&mnt2&“!$G:$G,MATCH(1,(A2=“&mnt2&”!$A:$A)*(C2=“&mnt2&”!$C:$C),0))
@Xabier谢谢您的帮助!遗憾的是,对于这个公式,数组公式是必需的,否则它将不起作用,如果我尝试像您刚刚将
.formula
更改为
。FormulaArray
那样放置它,我会遇到错误,无法设置Range类的FormulaArray,因为数组公式只接受255个字符