Excel VBA:无法获取WorksheetFunction类的Match属性

我正在尝试在两个工作簿之间进行匹配search,以查看Wbook1中input的名称是否在Wbook2的A列中。 例如…我有工作簿1的单元格D4中的“name1”…然后,我想要macrossearch工作簿2的列A以查找“name1”的位置。 我并不担心workbook2上不存在的名称,因为它应该始终存在。

使用Excel 2007,代码是:

Sub ViewData() Dim xlo As New Excel.Application Dim xlw As New Excel.Workbook Dim xlz As String Dim result As Double Dim SalesExec As String SalesExec = Range("d4").Value 'D4 contains the name from workbook1 I want to search for xlz = Range("y1").value 'This cell contains the file path for workbook 2 Set xlw = xlo.Workbooks.Open(xlz) 'Path is correct as the desired workbook does open result = Application.WorksheetFunction.Match(SalesExec, xlo.Worksheets("Data").Range("A:A"), 0) 'Data is the sheet in workbook2 containing the list of names Range("Q14").value = result xlw.Save xlw.Close Set xlo = Nothing Set xlw = Nothing End Sub 

如果我删除.WorksheetFunction,我得到一个“对象或应用程序定义的错误”。 如代码所示,我得到'无法获得工作表函数类的匹配属性'的错误,我不知道为什么。

任何帮助将非常感激。 谢谢!

尝试这个。 我已经评论了代码,所以你不会理解它的问题。

 Sub ViewData() Dim xlo As New Excel.Application Dim xlw As New Excel.Workbook Dim xlz As String Dim result As Double Dim LRow As Long Dim SalesExec As String SalesExec = Range("d4").Value xlz = Range("y1").Value Set xlw = xlo.Workbooks.Open(xlz) With xlw.Worksheets("Sheet1") '~~> Find the last row cause Range("A:A") in match will give error LRow = .Range("A" & .Rows.Count).End(xlUp).Row End With xlo.Visible = True '~~> Result is double so ensure that whatever you are trying to find is as Double '~~> Also It should be xlw.Worksheets("Data") and not xlo.Worksheets("Data") result = Application.WorksheetFunction.Match(SalesExec, xlw.Worksheets("Data").Range("A1:A" & LRow), 0) Range("Q14").Value = result xlw.Save xlw.Close Set xlo = Nothing Set xlw = Nothing End Sub