我很难设置此索引/匹配功能代码。 我尝试了几种选择,但它没有用。
我收到错误Run-time error '91': Object variable or With block variable not set
。
这是我的代码:
Sub breaks()
Dim wks As Worksheet
With Worksheets("report")
Range("I2") = Application.WorksheetFunction.Index(wks("final pos.xlsx").Sheet("position").Range("AG:AG"), Application.WorksheetFunction.Match(Sheets("report").Range("H2"), Sheets("position").Range("AK:AK"), 0))
Range("J2") = Application.WorksheetFunction.Index(wks("final pos.xlsx").Sheet("position").Range("I:I"), Application.WorksheetFunction.Match(Sheets("CASSreport").Range("H2"), Sheets("position").Range("AK:AK"), 0))
End With
End Sub
答案 0 :(得分:0)
如果您遇到Run-time error '91': Object variable or With block variable not set
错误,那么您的函数中的某些内容正在返回Nothing
并且您正在尝试使用它。
找到这个的最简单方法是引入中间变量,然后查看哪些未设置。例如,我在下面的语句的第一部分介绍了临时变量。您可以重复其他部分,直到找到断开的部分,然后查看未设置的部分。
Sub breaks()
Dim wks As Worksheet
Dim finalPosWorksheet as Worksheet
finalposWorksheet = wks("final pos.xlsx")
Dim position as Sheet
position = finalPosWorksheet.Sheet("position")
Dim positionRange as Range
postionRange = position.Range("AG:AG")
With Worksheets("report")
Range("I2") = Application.WorksheetFunction.Index(positionRange, Application.WorksheetFunction.Match(Sheets("report").Range("H2"), Sheets("position").Range("AK:AK"), 0))
Range("J2") = Application.WorksheetFunction.Index(wks("final pos.xlsx").Sheet("position").Range("I:I"), Application.WorksheetFunction.Match(Sheets("CASSreport").Range("H2"), Sheets("position").Range("AK:AK"), 0))
End With
End Sub
写完这篇文章后,我现在对这条线非常怀疑:
wks("final pos.xlsx")
这是什么意思?要打开工作簿?我怀疑这会起作用......
我将代码分解为您要遵循的步骤,每行都有一步。一旦你有了它,你就可以重构它以将线连接在一起并消除临时变量。