LastRow作为函数在模块中的几个子

一直试图让LastRow的事情,我可以在同一个模块中的几个代码使用它。

目前这是我得到的:

Function getLastRow() As Long Dim LRow As Long endrow = 11 Do Until Cells(endrow + 1, 1).Value = "" endrow = endrow + 1 Loop getLastRow = LRow End Function 

该函数正在工作,但我得到error 1004线,我尝试使用它。

 Sub PPP() Application.ScreenUpdating = False Call Unprotect ActiveSheet.Range("$A$11:$AH$" & getLastRow).AutoFilter Field:=4, Criteria1:="PPP" '<--error occurs here Call Protect Application.ScreenUpdating = True End Sub 

欣赏任何帮助,甚至更好的解决scheme。

这将工作:

 Function getlastrow(sht As Worksheet, Optional columnindex As Long = 1) As Long getlastrow = sht.Cells(sht.Rows.Count, columnindex).End(xlUp).Row End Function 

您可以指定工作表名称或使用ActiveSheet 。 您也可以select一个列,但如果没有给出,它将预先select1,即列A.

你会这样使用它:

 ActiveSheet.Range("$A$11:$AH$" & getLastRow(ActiveSheet)).AutoFilter..... 

更好的是,如果没有预先select,这个假设是ActiveSheet

 Function getlastrow(Optional sht As Worksheet = Nothing, Optional columnindex As Long = 1) As Long If sht Is Nothing Then Set sht = ActiveSheet getlastrow = sht.Cells(sht.Rows.Count, columnindex).End(xlUp).Row End Function 

你会像这样使用你的原始代码:

 ActiveSheet.Range("$A$11:$AH$" & getLastRow()).AutoFilter.....