excel vba中的匹配方法出现错误1004

excel vba中的匹配方法出现错误1004,vba,excel,match,Vba,Excel,Match,我在excel的两个不同的表格中工作,每个表格都有一组大约1200个ID号。当参考表1(RG摘要)时,我试图找到ID显示在表2(采购矩阵)上的行号。这最终是在工作表1上执行一些条件格式设置,其中工作表2 ID的行上有特定的值。我对VBA真的知之甚少(今年夏天我只是在做实习的兼职),所以我肯定我可能会错过一些主要的概念。。。但目前我得到了这个错误 运行时错误'1004: 无法获取WorksheetFunction类的Match属性 在 调试时,我可以看到ID2带有第一次迭代的ID值,但RowNum

我在excel的两个不同的表格中工作,每个表格都有一组大约1200个ID号。当参考表1(RG摘要)时,我试图找到ID显示在表2(采购矩阵)上的行号。这最终是在工作表1上执行一些条件格式设置,其中工作表2 ID的行上有特定的值。我对VBA真的知之甚少(今年夏天我只是在做实习的兼职),所以我肯定我可能会错过一些主要的概念。。。但目前我得到了这个错误

运行时错误'1004: 无法获取WorksheetFunction类的Match属性

调试时,我可以看到ID2带有第一次迭代的ID值,但RowNum返回为0

Sub DisplayMatrix()

Dim i As Integer, j As Integer, ItemID As String, rng1 As Range, _
ID2 As String, RowNum As Integer, PM As Worksheet

'initiates loop in sheet 1
'each ID is 7 cells apart
 For i = 14 To 1757 Step 7

        'sets ID variable where ID is present
        If Cells(i, 2).Value <> "" Then ItemID = Worksheets("RG Summary").Cells(i, 2).Value

          'finds ID in sheet2
           ID2 = Worksheets("Purchasing Matrix").Cells.Find(What:=ItemID, _
           LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns, _
           SearchDirection:=xlNext, MatchCase:=False)

          'matches ID2 and ItemID and returns row number from sheet 2
           Set PM = Worksheets("Purchasing Matrix")
             With PM
             RowNum = WorksheetFunction.Match(ID2, Range("E10:E1500"), 0)
             End With


  Next i
  End

End Sub
子显示矩阵()
Dim i为整数,j为整数,ItemID为字符串,rng1为范围_
ID2作为字符串,RowNum作为整数,PM作为工作表
'启动工作表1中的循环
“每个ID间隔7个单元格
对于i=14至1757步骤7
'设置存在ID的ID变量
如果单元格(i,2).Value“”,则ItemID=工作表(“RG摘要”).Cells(i,2).Value
'在sheet2中查找ID
ID2=工作表(“采购矩阵”).Cells.Find(What:=ItemID_
LookIn:=xlFormulas,LookAt:=xlPart,SearchOrder:=xlByColumns_
SearchDirection:=xlNext,MatchCase:=False)
'匹配ID2和ItemID,并从第2页返回行号
设置PM=工作表(“采购矩阵”)
与首相
RowNum=WorksheetFunction.Match(ID2,范围(“E10:E1500”),0)
以
接下来我
终点
端接头
更换:

RowNum = WorksheetFunction.Match(ID2, Range("E10:E1500"), 0)
与:

(圆点可能很小,但很重要)

(可能还有其他问题)

尝试将“应用程序”替换为“工作表函数”,作为包含匹配函数的对象。我现在在linux上,所以我无法验证这是问题所在,但这将是我的第一个猜测。关于如何使用它,位于的文档有点模棱两可,但示例似乎使用Match()作为应用程序的方法。当我这样做时,返回错误“type mismatch”!给我一点时间把窗户拉起来,我再看一看。错误发生在哪一行?另外,如果设置
ID2=…
Yes,则可能尝试将
.Value
添加到
Find()
的末尾,因为列E很可能具有混合数据类型,所以match不是查找匹配项。使用列中不存在的分隔符对列E上的列运行文本,并使用文本作为数据类型。那应该能解决你的问题。
RowNum = WorksheetFunction.Match(ID2, Range("E10:E1500"), 0)
RowNum = WorksheetFunction.Match(ID2, .Range("E10:E1500"), 0)