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 )。