Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 运行时错误424需要对象_Vba_Excel - Fatal编程技术网

Vba 运行时错误424需要对象

Vba 运行时错误424需要对象,vba,excel,Vba,Excel,我无法在下面列出的子列表中找到我的错误。我收到一条“运行时错误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

我无法在下面列出的子列表中找到我的错误。我收到一条“运行时错误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

在一维数组中编制索引时,为
索引
设置两个参数是没有意义的

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

.Match(查找值,SHEET1NAME.Range(“B13”),0)

没有意义,因为你在一个单元格中搜索。您是否打算在第13行搜索

.Match(lookup_value, SHEET1NAME.Range("13:13"), 0)
但是,只有在二维范围内编制索引时,才可以使用两个参数来编制索引。但是,您需要反转为
索引提供的第二个和第三个参数,因为第二个参数是行索引,在列中获取,第三个是在行中获取的列索引

例如,假设要在范围
A1:D20
中查找一个单元格,其中
lookup\u value
显示在列
a
(同一行)和行13(同一列)上:


顺便问一下,什么是
SHEET1NAME
SHEET2NAME
?只是名称还是工作表对象?以上所有这些都假设它们是工作表对象,但我猜运行时错误是抱怨这些只是名称而不是对象!在这种情况下,用
工作表(SHEET1NAME)
工作表(SHEET2NAME)
替换它们。在一维数组中编制索引时,为
索引设置两个参数是没有意义的

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

.Match(查找值,SHEET1NAME.Range(“B13”),0)

没有意义,因为你在一个单元格中搜索。您是否打算在第13行搜索

.Match(lookup_value, SHEET1NAME.Range("13:13"), 0)
但是,只有在二维范围内编制索引时,才可以使用两个参数来编制索引。但是,您需要反转为
索引提供的第二个和第三个参数,因为第二个参数是行索引,在列中获取,第三个是在行中获取的列索引

例如,假设要在范围
A1:D20
中查找一个单元格,其中
lookup\u value
显示在列
a
(同一行)和行13(同一列)上:


顺便问一下,什么是
SHEET1NAME
SHEET2NAME
?只是名称还是工作表对象?以上所有这些都假设它们是工作表对象,但我猜运行时错误是抱怨这些只是名称而不是对象!在这种情况下,用
工作表(SHEET1NAME)
替换它们,并且
工作表(SHEET2NAME)

我的excel公式是…=索引(SHEET2NAME!D:D,MATCH($B$13,SHEET2NAME!$A:$A,0))B13处于启用状态SHEET1NAME@t.mo可以在公式的一部分更改图纸的名称。i、 e.
SHEET1NAME.Range(“13:13”)
。但是您需要决定使用哪个参数,不能在一列中有两个参数要索引。顺便问一下,
SHEET1NAME
SHEET2NAME
是什么?只是名称还是工作表对象?我猜想运行时错误是抱怨这些只是名称而不是对象!工作表的
Name
.CodeName
值可能总是相同的,但明确使用
wb.Worksheets(“SHEET1NAME”).Range
而不是
SHEET1NAME.Range
。我的excel公式是…=索引(SHEET2NAME!D:D,MATCH($B$13,SHEET2NAME!$A$A,0))B13接通SHEET1NAME@t.mo可以在公式的一部分更改图纸的名称。i、 e.
SHEET1NAME.Range(“13:13”)
。但是您需要决定使用哪个参数,不能在一列中有两个参数要索引。顺便问一下,
SHEET1NAME
SHEET2NAME
是什么?只是名称还是工作表对象?我猜想运行时错误是抱怨这些只是名称而不是对象!工作表的
Name
.CodeName
值可能总是相同的,但明确使用
wb.Worksheets(“SHEET1NAME”).Range
而不是
SHEET1NAME.Range
,可能更安全。您的代码实际上是否有
SHEET1NAME
或是占位符?如果它是一个占位符,您是否只是在那里使用图纸名称?因为它应该是
图纸(“Sheet1Name”)。范围(“E13”)
,等等。您的代码实际上有
图纸1Name
还是占位符?如果它是一个占位符,您是否只是在那里使用图纸名称?因为它应该是
图纸(“Sheet1Name”)。范围(“E13”)
等。