Avatar billede kafka23 Juniormester
27. maj 2010 - 13:39 Der er 9 kommentarer og
1 løsning

faner i Excel

Jeg har 107 faner i Excel.
Kan Jeg sortere dem alfabetisk fra højre mod venstre?
Vh
Søren
Avatar billede berit66 Praktikant
27. maj 2010 - 15:11 #1
Hvis det må være en VBA løsning, kan denne måske bruges?


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 & " is protected.", _
vbCritical, "Cannot Sort Sheets."
Exit Sub
End If
' Make user verify
If MsgBox("Sort the sheets in the active workbook?", _
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

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
Avatar billede berit66 Praktikant
27. maj 2010 - 15:34 #2
Ups, jeg kom til at se at du ville have sorteret fra højre mod venstre:

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 & " is protected.", _
vbCritical, "Cannot Sort Sheets."
Exit Sub
End If
' Make user verify
If MsgBox("Sort the sheets in the active workbook?", _
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

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
Avatar billede kafka23 Juniormester
27. maj 2010 - 15:51 #3
1. Øhm, jeg mente fra venstre mod højre.
2. Endnu mere Øhm. Hvordan får jeg maskinen etil at gøre det?
Jeg er kun lidt nybegynder....
Avatar billede berit66 Praktikant
27. maj 2010 - 15:59 #4
Du går ind i VBA- alt+F11, opretter et ny modul via Insert-New module.

Herefter kopierer du hele koden ind i modulet. Herefter kan du køre den ligesom du ville køre en alm. makro. Hvis du skal have uddybet det mere, siger du bare til. Hvis der skal sorteres fra venstre til højre skal du bruge koden i mit første svar.
Avatar billede ptj_11 Forsker
27. maj 2010 - 21:27 #5
Det kalder jeg service af første karat.
/ptj_11
Avatar billede berit66 Praktikant
28. maj 2010 - 08:07 #6
Tak ptj_11 ;-)
Avatar billede kafka23 Juniormester
28. maj 2010 - 15:24 #7
Takker.
Hvordan giver jeg point?
Avatar billede berit66 Praktikant
28. maj 2010 - 15:29 #8
Du markerer mit svar og sætter flueben i giv point (så vidt jeg husker) ;-) Godt du kunne bruge svaret.
Avatar billede vejmand Juniormester
28. maj 2010 - 15:34 #9
kafka23 >> Husk at sende egne indlæg som "Kommentar", og ikke som "Svar"

Du lukker spørgsmålet ved at sætte flueben i "Accepter dette svar" ud for svaret fra berit66, og klikke på "Accepter svar og afgiv point" nederst.
Avatar billede berit66 Praktikant
06. juni 2010 - 08:43 #10
Fik du besvaret dit spørgsmål??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester