Sortera bladflikar i Excel med makro
Hur gör jag för att sortera bladflikar i Excel? Den frågan har jag fått några gånger…:-)
Tyvärr finns det inget inbyggt sätt sortera bladflikar på i Excel, vilket givetvis hade varit praktiskt ibland. Dock kan du lösa det med hjälp av ett makro på ett enkelt sätt:
Makrot i den bifogade filen nedan låter dig välja om du vill sortera bladflikarna i stigande (A-Ö) eller fallande ordning (Ö-A). I filen är makrot kopplat till knappar, men du kan ju givetvis köra igång det via menyfliken Utvecklare eller koppla ett kortkommando till makrot. Du kopplar makrot till ett kortkommando genom att välja menyfliken Utvecklare (1) och knappen Makron (2). Markera makrot i listan (3) och klicka på Alternativ…(4). Välj sedan önskat kortkommando (5).
Vi rekommenderar dessa Excelkurser:
www.infocell.se – lärarledda kvalitetskurser i Excel
www.officekurs.se – oslagbar e-kurser i Excel & Office-paketet
Det går självklart bra att kopiera koden nedan också. Öppna sedan VBA-editorn (Alt+F11). Klicka på menyfliken Infoga och välj Modul. Klistra in koden. Sedan är det bara att använda makrot för att sortera bladflikar i fallande eller stigande ordning.
Makrokod:
Sub Sortera_Bladflikar() Dim i As Integer Dim j As Integer Dim iAnswer As VbMsgBoxResult ' ' Prompt the user as which direction they wish to ' sort the worksheets. ' iAnswer = MsgBox("Sortera bladflikarna i stigande ordning (A-Ö)?" & Chr(10) _ & "Klicka Nej för att sortera i fallande ordning (Ö-A)", _ vbYesNoCancel + vbQuestion + vbDefaultButton1, "Sortera bladflikar") For i = 1 To Sheets.Count For j = 1 To Sheets.Count - 1 ' ' If the answer is Yes, then sort in ascending order. ' If iAnswer = vbYes Then If UCase$(Sheets(j).Name) > UCase$(Sheets(j + 1).Name) Then Sheets(j).Move After:=Sheets(j + 1) End If ' ' If the answer is No, then sort in descending order. ' ElseIf iAnswer = vbNo Then If UCase$(Sheets(j).Name) < UCase$(Sheets(j + 1).Name) Then Sheets(j).Move After:=Sheets(j + 1) End If End If Next j Next i End Sub