我正在尝试使用函数将范围引用传递给vlookup公式。下面是带有 mytrim 功能的vlookup公式:
Selection.Formula =" = vlookup(D1,sheet1!A:"& mytrim (范围(" XFD1")。结束(xlToLeft )。地址)&",2,0)"
这是 mytrim 功能的代码:
Public Function mytrim(str As String) As String
Dim x
Dim y
x = InStr(1, str, "$")
y = InStr(x + 1, str, "$")
mytrim = Left(Replace(str, "$", ""), y - x - 1)
End Function
在执行结束功能时,会抛出错误"对象变量或未设置块变量"
我试图将vlookup公式设为" = vlookup(D1,sheet1!A:AE,2,0)"。 AE是sheet1中可能会改变的最后一列。
答案 0 :(得分:0)
问题不在于您的功能。如I found和you have mentioned in the comments,您的代码运行正常并生成正确的返回值,但在尝试从方法返回时会出现错误。
您的问题Selection
会出现在Nothing
。由于您在End Function
上收到错误,这意味着您在尝试设置结果值时遇到了问题。
我无法弄清楚Selection
将如何设置(我没想到它实际上是可能的)但我设法用以下方式复制行为:
Sub test()
Dim Rng As Range
Rng.Formula = "=vlookup(D1, sheet1!A:" & _
mytrim(Range("XFD1").End(xlToLeft).Address) & ",2,0)"
End Sub
因此,您需要检查调用此函数的方式,并确保在函数调用的左侧正确定义了所有内容。