Hi,

I think you are back to your Max-method, but I would write it as a loop so that it is more flexible...
Thanks Rick Rothstein the suggestion, unfortunately if run with Excel 2003 takes 10 seconds!!

I propose the following Sub

Code:
Sub MaxCol()
    Dim Coln As Long, Surface
    Surface = Array("B", "C", "G")
    For Coln = 0 To UBound(Surface)
        Surface(Coln) = Cells(Rows.Count, Surface(Coln)).End(xlUp).Row
    Next
    MsgBox Application.Max(Surface)
End Sub