我在excel中有这段代码:
Private Function RelCell(NmdRng as String) as Range
Set RelCell = Range(NmdRng).Cells(1,1)
End Function
它给出了运行时错误“91”:对象变量或未设置块变量。
我真的不知道我的功能有什么问题..有人吗?
答案 0 :(得分:0)
我不知道这是不是问题,但是你只是设置范围并且没有从函数中返回任何内容。
尝试将具有不同名称的范围变量声明为函数并返回该值。
答案 1 :(得分:0)
实际上,您应该能够按照此MSDN Thread中的说明从UDF返回范围。
以下是MVP给出的代码:
Function GetMeRange(rStartCell As Range, lRows As Long, iColumns As Integer) As Range
Set GetMe = rStartCell.Resize(lRows, iColumns) ' note the use of Set here since we are setting an object variable
End Function
(并且有效)
Tiago的评论指出了一个非常正确的事情,因为你想要访问一个命名的范围,它应该首先定义。
您可以尝试在UDF中设置断点,并查看是否已定义Range(NmdRng)
。
答案 2 :(得分:0)
您的指定范围已附加了一个单元格引用,因此您不需要在其末尾添加.Cells(1,1)
。
仅使用.Range(nmdRng)
属性将返回您要查找的范围对象。
尝试:
Private Function RelCell(NmdRng as String) as Range
Set RelCell = Range("NmdRng")
End Function
答案 3 :(得分:0)
请重写您的代码并按如下方式进行测试:
Private Function RelCell(NmdRng as String) as Range
Dim TestRange As Range
Set TestRange=Range(NmdRng)
TestRange.Activate 'I think that error will occur here because, NmdRng is somehow invalid
Set RelCell = TestRange.Cells(1,1)
End Function