xlcelltypelastcell is unreliable at best since Excel forgets what its used range is all the time.

Try this


Sub SortAndSub()
Dim Rng1            As Range
Dim LastRow         As Long
'Set Range Manualy
    Set Rng1 = Range("A1:C228")
    'Set Range Automatically
'   LastRow = Range("A65536").End(xlUp).Row
'    Set Rng1 = Range("A1:C" & LastRow)
ActiveSheet.Unprotect
    Rng1.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range _
        ("C2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _
        :=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
        DataOption2:=xlSortNormal
    Range("A1").Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(3), _
        Replace:=True, PageBreaks:=False, SummaryBelowData:=True
ActiveSheet.Outline.ShowLevels RowLevels:=2
    ActiveSheet.Protect
End Sub

Sub UnSubT()
    Range("A1").Select
    ActiveSheet.Unprotect
    Selection.RemoveSubtotal
    ActiveSheet.Protect
End Sub