View Single Post
  #2   Report Post  
Posted to microsoft.public.excel.programming
Gary''s Student Gary''s Student is offline
external usenet poster
 
Posts: 11,058
Default Get smaller range from within another range using VBA

We can use .Count

sub servient()
Set r1 = Range("A1:Z100")
Set r2 = Example(r1.Address)
MsgBox (r2.Address)
MsgBox (r2.Count)
End Sub

Function Example(s As String) As Range
Set r = Range(s)
If r.Count < 20 Or r.Count = 20 Then
Set Example = r
Exit Function
End If

k = r.Count - 20
i = 1
For Each rr In r
If i k Then
If Example Is Nothing Then
Set Example = rr
Else
Set Example = Union(rr, Example)
End If
End If
i = i + 1
Next
End Function

We pass the address of the big range to Example. It loops thru the big
range and returns the last 20 cells as the little range.
--
Gary''s Student - gsnu200806


"Craig" wrote:

Hello,

I am new to VBA in Excel, although I have some experience. I am trying to
write a function that asks the user to input a range of cells. From that
range of cells, I want to extract the last 20 cells in the range (or all the
cells, if the range is smaller than 20 cells) and use that 20-cell subrange
to perform various calculations.

E.G.

Function Example (Input As Range) As Variant

Dim subrange as Range

??

End Function

My two questions a

1. Is there a property of the Range object that can tell you how many cells
are in it?

2. Once I know how many cells are in it, what is the best syntax to extract
the last 20 cells in Input (above) and assign that range to subrange (above)?
I would then use subrange to perform the necessary calculations.

Any help is greatly appreciated!

Thanks,
Craig