Excel VBA : Unable to get the Match property of the WorksheetFunction class

标签 excel vba match

我正在尝试在两个工作簿之间进行匹配搜索,以查看 Wbook1 中输入的名称是否在 Wbook2 的 A 列中。例如...我在 workbook1 的单元格 D4 中有“name1”...然后我希望宏搜索 workbook2 的 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

关于Excel VBA : Unable to get the Match property of the WorksheetFunction class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16102122/

相关文章:

vba - 将更新的 Excel VBA 代码分发给多个最终用户

vba - Excel VBA 更改命令按钮的颜色

mysql - vb.net + mysql - 搜索表中与输入值最相似的前 5 行

excel - 在Excel VBA中将选择除以X

vba - 如何在计时器到期时关闭 InfoBox.Popup?

r - 如何从 df 中对多个列进行子集化,包括 grep match

linux - 从目录中的所有文件中删除包含字符串的行

excel - 如何在vba中查找一组数据的该月的第一个日期

Excel VBA - 扫描范围并删除空行

excel - Spreadsheet_Excel_Writer Excel 2007 格式