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