Jim -
I took your code and tweaked it, below. It seems to test OK, to search
either a range or the worksheet. Any suggestions? Thanks much.
Public Function LastCellF(Optional ByVal ArgRng As Range, _
Optional ByVal Ws As Worksheet) As Range
'Output: Last Cell in argument range, or worksheet; as a range
' Input: Worksheet is checked if ArgRng is nothing.
Dim LasRow As Long
Dim LasCol As Integer
If ArgRng Is Nothing Then If Ws Is Nothing Then Set Ws = ActiveSheet
With Ws
If ArgRng Is Nothing Then
On Error Resume Next
LasRow = .Cells.Find(What:="*", After:=.Range("A1"),
Lookat:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByRows,
SearchDirection:=xlPrevious, MatchCase:=False).Row
On Error Resume Next
LasCol = .Cells.Find(What:="*", After:=.Range("A1"),
Lookat:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByColumns,
SearchDirection:=xlPrevious, MatchCase:=False).Column
Else 'Have a range as input to be searched
On Error Resume Next
LasRow = ArgRng.Find(What:="*", After:=.Cells(ArgRng.Row,
ArgRng.Column), Lookat:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByRows,
SearchDirection:=xlPrevious, MatchCase:=False).Row
LasCol = ArgRng.Find(What:="*", After:=.Cells(ArgRng.Row,
ArgRng.Column), Lookat:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByColumns,
SearchDirection:=xlPrevious, MatchCase:=False).Column
End If
On Error GoTo 0
If LasRow = 0 Then
LasRow = 1
LasCol = 1
End If
Set LastCellF = .Cells(LasRow, LasCol)
End With
End Function