Se pretendermos efectuar uma ordenação por escolha através de uma InputBox, como no exemplo:

para o resultado:

ou:

para o resultado:

podemos utilizar o seguinte código:
Sub Ordena()
'
' Macro recorded 04-04-2007 by JRod
'
'
Dim Choice As String
Choice = InputBox("Ordenar por:")
If Choice = "data" Then
Range("A2:B6").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
ElseIf Choice = "nome" Then
Range("A2:B6").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Else
Exit Sub
End If
End Sub