Sub WS_Sort2()
Dim i As Integer
Dim j As Integer
Dim TotShts As Integer
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In Worksheets
If Sh.CodeName = "Sheet1" Then
Sh.Move Before:=Worksheets(2)
End If
Next Sh
For Each Sh In Worksheets
If Sh.CodeName = "Sheet2" Then
Sh.Move After:=Worksheets(1)
End If
Next Sh
For Each Sh In Worksheets
If Sh.CodeName = "Sheet3" Then
Sh.Move After:=Worksheets(2)
End If
Next Sh
TotShts = Worksheets.Count
If TotShts <= 4 Then Exit Sub
For i = 4 To TotShts
For j = i + 1 To TotShts
If Worksheets(j).Name < Worksheets(i).Name Then
Worksheets(j).Move Before:=Worksheets(i)
End If
Next j
Next i
End Sub
It would have been quicker if you had posted your code at the outset. Try this:
Code:Sub WS_Sort2() Dim i As Integer Dim j As Integer Dim TotShts As Integer Dim Sh As Worksheet Application.ScreenUpdating = False For Each Sh In Worksheets If Sh.CodeName = "Sheet1" Then Sh.Move Before:=Worksheets(2) End If Next Sh For Each Sh In Worksheets If Sh.CodeName = "Sheet2" Then Sh.Move After:=Worksheets(1) End If Next Sh For Each Sh In Worksheets If Sh.CodeName = "Sheet3" Then Sh.Move After:=Worksheets(2) End If Next Sh TotShts = Worksheets.Count If TotShts <= 4 Then Exit Sub For i = 4 To TotShts For j = i + 1 To TotShts If Worksheets(j).Name < Worksheets(i).Name Then Worksheets(j).Move Before:=Worksheets(i) End If Next j Next i End Sub