我试图在同一模块的多个代码中使用 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
感谢任何帮助,甚至是更好的解决方案。
答案 0 :(得分:1)
这样可行:
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
。您也可以选择一个列,但如果没有给出,它将预先选择1,即A列。
你会这样使用它:
ActiveSheet.Range("$A$11:$AH$" & getLastRow(ActiveSheet)).AutoFilter.....
更好的是,如果没有预选,这个假定为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.....