运行时错误424对象需要

我无法find我在下面列出的错误。 我收到“运行时错误424对象所需”消息。

我的意图是将我的Excel公式转换成VBA代码。

Private Sub Workbook_INDEXMATCH() Dim wb As Workbook, wb1 As Workbook Dim LastRow As Long Set wb = Workbooks("WORKBOOK.xlsm") With Application.WorksheetFunction SHEET1NAME.Range("E13") = _ .Index(SHEET2NAME.Range("D:D"), .Match(lookup_value, SHEET1NAME.Range("B13"), 0), .Match(lookup_value, SHEET2NAME.Range("A:A"), 0)) End With End Sub 

当您在单维数组中build立索引时,索引有两个参数是没有意义的。

 .Index(SHEET2NAME.Range("D:D"), .Match(lookup_value, SHEET2NAME.Range("A:A"), 0)) 

也,

.Match(lookup_value, SHEET1NAME.Range("B13"), 0)

没有意义,因为你在这里的单个单元格中search。 可能是你打算在第13行search?

 .Match(lookup_value, SHEET1NAME.Range("13:13"), 0) 

但是,仅当您在二维范围内build立索引时,才会使用2个参数作为Index 。 但是你需要反转你给Index的第二个和第三个参数,因为第二个参数是一个行索引,它是在一个列中获取的,第三个是在该行中获取的列索引。

例如,假设您想要查找一个单元格,范围为A1:D20 ,其中lookup_value出现在A列(同一行)和第13行(同一列)上:

 myVariable = .Index(SHEET2NAME.Range("D:D"), _ .Match(lookup_value, SHEET2NAME.Range("A:A"), 0), _ .Match(lookup_value, SHEET1NAME.Range("13:13"), 0)) 

顺便说一下, SHEET1NAMESHEET2NAME什么? 只是名称或工作表对象? 所有上述假定他们是工作表对象,但我猜运行时错误是抱怨,这些只是名称不是对象! 在这种情况下,将其replace为Worksheets(SHEET1NAME)Worksheets(SHEET2NAME)