我一直在尝试各种方法来查找范围中的最后一行并将此数字返回到子程序,但无济于事。
这是我的代码
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
我一直在
上找到Type MismatchgetLastRowInRange = rng.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows,_ SearchDirection:=xlPrevious).Row
任何线索,伙计们?
答案 0 :(得分:4)
ProcessData(oSheet)
否则,您传递的是oSheet
对象的默认属性的值,它没有。你应该得到“对象不支持这个属性或方法”。
执行此操作后,更改函数调用:
getLastRowInRange = rng.Cells.Find(What:="*", After:=rng.Cells(1), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
After
必须属于搜索范围。 A1
不属于L:S
。
最后,请确保在Find
返回Nothing
时暂时处理此情况(目前您还没有,请在返回的对象上调用.Row
。)