Anne,
This should set your sort for any number of rows, as long as the column structure remains the same. The rest of the code should be OK already.


Sub SortAndSub() 
ActiveSheet.Unprotect Password:="" 
Application.Goto Reference:="R1C1" 
Application.CutCopyMode = False 
Range("A1",activesheet.Cells.SpecialCells(xlCellTypeLastCell)).Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range _ 
("C2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _ 
:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _ 
DataOption2:=xlSortNormal 
Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(3), _ 
Replace:=True, PageBreaks:=False, SummaryBelowData:=True 
ActiveSheet.Outline.ShowLevels RowLevels:=2 
ActiveSheet.Protect Password:="" 
End Sub 

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