Ok, eu fiz isso. Como Raystafarian sugeriu, eu segurei o evento Worksheet_Change
e usei a função Range().Sort
para obter minhas colunas ordenadas. Cada coluna tem um cabeçalho e eu queria que eles fossem ordenados alfabeticamente em ordem crescente, então aqui está minha função:
Private Sub Worksheet_Change(ByVal Target As Range)
Range("A2:A100").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes
Range("B2:B100").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlYes
Range("C2:C100").Sort Key1:=Range("C1"), Order1:=xlAscending, Header:=xlYes
Range("D2:D100").Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlYes
Range("E2:E100").Sort Key1:=Range("E1"), Order1:=xlAscending, Header:=xlYes
Range("F2:F100").Sort Key1:=Range("F1"), Order1:=xlAscending, Header:=xlYes
End Sub
Não pode ser uma solução particularmente elegante ou infalível, mas resolve meu problema perfeitamente e com um pouco de treinamento, os usuários saberão não modificar as colunas do cabeçalho.
Obrigado, Raystafarian!