Sub BubbleSort(List() As String) ' Sorts the List array in ascending order Dim First As Long, Last As Long Dim i As Long, j As Long Dim Temp As String First = LBound(List) Last = UBound(List) For i = First To Last - 1 For j = i + 1 To Last If List(i) > List(j) Then Temp = List(j) List(j) = List(i) List(i) = Temp End If Next j Next i End Sub ' Option Explicit Sub SortSheets() ' This routine sorts the sheets of the ' active workbook in ascending order. ' Use Ctrl+Shift+S to execute Dim SheetNames() As String Dim i As Long Dim SheetCount As Long Dim OldActiveSheet As Object If ActiveWorkbook Is Nothing Then Exit Sub ' No active workbook SheetCount = ActiveWorkbook.Sheets.count ' Check for protected workbook structure If ActiveWorkbook.ProtectStructure Then MsgBox ActiveWorkbook.Name & " je zaštićen.", _ vbCritical, "Ne mogu sortirati radne listove.""" Exit Sub End If ' Make user verify If MsgBox("Sortirati radne listove u aktivnom fajlu?", _ vbQuestion + vbYesNo) <> vbYes Then Exit Sub ' Disable Ctrl+Break Application.EnableCancelKey = xlDisabled ' Get the number of sheets SheetCount = ActiveWorkbook.Sheets.count ' Redimension the array ReDim SheetNames(1 To SheetCount) ' Store a reference to the active sheet Set OldActiveSheet = ActiveSheet ' Fill array with sheet names For i = 1 To SheetCount SheetNames(i) = ActiveWorkbook.Sheets(i).Name Next i ' Sort the array in ascending order Call BubbleSort(SheetNames) ' Turn off screen updating Application.ScreenUpdating = False ' Move the sheets For i = 1 To SheetCount ActiveWorkbook.Sheets(SheetNames(i)).Move _ Before:=ActiveWorkbook.Sheets(i) Next i ' Reactivate the original active sheet OldActiveSheet.Activate End Sub