我正在尝试构建一个函数,它将获取一个输入单元格(比如说“B5”)并返回一个引用表格的范围对象(其中提供的单元格是右上角的条目)
Sub Macro1()
Dim testCell As Range
testCell = Worksheets("HMA").Range("B5")
ReturnTable testCell
End Sub
Function ReturnTable(cell As Range)
firstcell = cell
lastrow = firstcell.End(x1Down)
Table = Range(firstcell, lastrow + 5).Value
End Function
我在这里遇到了很多问题,我觉得我错过了一些简单的事情。我得到的错误是lastRow行的“Object Required”。
在调试模式下查看它我看到testCell被赋予了范围对象的值(我假设这是默认值)。我在这里错过了什么?
我的方法是否合理?我应该以不同的方式考虑解决这个问题吗?
答案 0 :(得分:3)
End返回一个Range对象,因此,lastrow必须是范围变量。
Function ReturnTable(firstcell as Range) as Range 'add this as range to tell the result of the function is a range
dim LastCell as Range
Set LastCell = firstcell.END(xldown)
Set ReturnTable = Range(firstcell, lastcell) 'must use the same name of the function
End Function
如果您想要lastcell,请使用LastCell.Offset(5,0)
在Macro1中,您可能需要类似
的内容Set SomeVar = ReturnTable(testcell)
答案 1 :(得分:3)
分配对象(如范围)时,必须使用“设置”。
如果指定Range而没有“Set”,VBA将分配Range的值而不是Range本身。
Set testCell = Worksheets("HMA").Range("B5")