Hallo Flodnug,
in den Hilfsspalten hast du ja Monat und Tag aus dem Geburtstag ermittelt. Diese Spalten würde ich für die Sortierung des Geburtstags auch verwenden:
Sub Gebtag()
'
With ActiveWorkbook.Worksheets("Tabelle1").Sort
.SortFields.Clear
.SortFields.Add Key:=Range( _
"H5:H304"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
.SortFields.Add Key:=Range( _
"G5:G304"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
.SortFields.Add Key:=Range( _
"B5:B304"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
.SortFields.Add Key:=Range( _
"C5:C304"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
.SetRange Range("B5:Q304")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("B5").Select
End Sub
Du sortierst zuerst nach Spalte I, die zusammengesetzt und somit grds. als Text angesehen wird (sortiere deine Tabelle mal "per Hand" nach Spalte I und schau dir die Meldung an). Deine Hilfsspalte I ist hier eigentlich überflüssig.
Und wenn du schon das Datum mit Tag und Monat zusammensetzen willst, dann würde ich das mit folgender Formel machen:
=WENNFEHLER(DATUM(0;H5;G5);"")
und die Spalte I benutzerdefiniert im Format TT.MM formatieren. Dann klappt auch die Sortierung mit deinem aufgezeichneten Makro.
Gruß
M.O.