MS Excel 2007 VBA函数错误(对象变量或未设置块变量)

时间:2014-07-16 07:23:35

标签: excel excel-vba excel-formula vba

我正在尝试使用函数将范围引用传递给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中可能会改变的最后一列。

1 个答案:

答案 0 :(得分:0)

问题不在于您的功能。如I foundyou 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

因此,您需要检查调用此函数的方式,并确保在函数调用的左侧正确定义了所有内容。