Excel 2011 VBA – 自定义函数来获取范围中的最后一行
我一直在尝试各种方法来查找范围中的最后一行,并将这个数字返回到一个子例程,这是徒劳无益的。
这是我的代码
Sub StartHere() Dim oSheet As Worksheet Set oSheet = WorkSheets(1) ProcessData(oSheet) End Sub Sub ProcessData(ByVal wkst As Worksheet) Dim rng As Range Dim lastRow As Long 'set range Set rng = wkst.Range("L:S") 'Range that i want to process data on 'get the last row (in Long datatype) lastRow = CLng(getLastRowInRange(rng)) End Sub Function getLastRowInRange(ByRef rng As Range) getLastRowInRange = rng.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows,_ SearchDirection:=xlPrevious).Row End Function
我一直在types不匹配的
getLastRowInRange = rng.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows,_ SearchDirection:=xlPrevious).Row
任何线索,伙计?
ProcessData(oSheet)
删除括号 。
否则,您传递的是oSheet
对象的默认属性的值,它没有。 虽然你应该得到“对象不支持这个属性或方法”。
完成之后,改变函数调用:
getLastRowInRange = rng.Cells.Find(What:="*", After:=rng.Cells(1), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
必须属于search范围之后。 A1
不属于L:S
。
最后,确保在Find
返回Nothing
时处理这种情况(您现在不需要在返回的对象上愉快地调用.Row
)。