Sub Order()

LRow = Range("D" & Rows.Count).End(xlUp).Row
Range("A2").Select
ActiveWorkbook.Worksheets("WS1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("WS1").Sort.SortFields.Add Key:=Range("L2:L" & LRow _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("WS1").Sort.SortFields.Add Key:=Range("I2:I" & LRow _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
ActiveWorkbook.Worksheets("WS1").Sort.SortFields.Add Key:=Range("P2:P" & LRow _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("WS").Sort
.SetRange Range("A1:A" & LRow)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply End With
End Sub
Hello! I have a problem with this thing I tried. I am pretty much a beginner, so I tried to steal ideas from watching how a macro works. Then I tried to make it dynamic, because the list i am using it for is changing every time.

But when I tried to apply this version, it just says that has a problem by executing @ .Apply (marked BOLD)

I know this looks horrible. How should I do it?