meabrams,

Isn't it just

Sub test()
    Dim a, i As Long, ii As Long, temp
    With [a52:a54]
        a = .Value
        For i = 1 To UBound(a, 1) - 1
            For ii = i + 1 To UBound(a, 1)
                If Len(a(i, 1)) < Len(a(ii, 1)) Then
                    temp = a(i, 1)
                    a(i, 1) = a(ii, 1)
                    a(ii, 1) = temp
                End If
            Next
        Next
        .Value = a
    End With
End Sub