Here are two ways to do it. There must be many more:
Name the range containing the intergers "Foo"
Sub foo()
Dim rng As Range
Dim cell As Object
Dim i As Integer
Set rng = Range("Foo")
i = rng(1)
With rng
For Each cell In rng.Cells
If cell.Value < i Then
i = cell.Value
End If
Next
End With
Debug.Print i
Set rng = Nothing
End Sub
This simply assigns the first value in range "Foo" to i, then tests the values
in each cell in range "Foo". If that value is less than i, i gets reassigned,
otherwise i remains the same and the loop commences.
Here's another way, using the evaulate method:
Sub foo2()
Dim rng As Range
Dim i As Integer
Set rng = Range("foo")
i = Evaluate("Min(" & rng.Address & ")")
Debug.Print i
End Sub
Here, you borrow Excel's built-in Min function using the Evaluate method.
I'm not sure which method is preferrable, but in the interests of typing less,
maybe the second approach is best.
HTH,
Johnny
Other readers: Do you know how to convert the Evaluate method above to the
shorthand version using square brackets? I couldn't get it to work.
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.