Se stai lavorando a un progetto che utilizza molti fogli di lavoro in una cartella di lavoro, potresti volerlo ordinare in base al nome del foglio di lavoro. La seguente breve macro farà il trucco molto bene:

Sub SortSheets()

Dim I As Integer, J As Integer

For I = 1 To Sheets.Count - 1         For J = I + 1 To Sheets.Count             If UCase(Sheets(I).Name) > UCase(Sheets(J).Name) Then                 Sheets(J).Move Before:=Sheets(I)

End If         Next J     Next I End Sub

Questa macro funziona se hai un numero relativamente basso di fogli di lavoro nella tua cartella di lavoro. Se, quando esegui la macro, noti che l’esecuzione della macro richiede molto tempo, potresti voler utilizzare un algoritmo di ordinamento più efficiente nella macro. Ad esempio, la seguente è una versione che legge i nomi di tutti i fogli di lavoro in un array, ordina l’array usando l’algoritmo BubbleSort e quindi fa l’effettivo arrangiamento:

Sub SortSheets()

Dim I As Integer     Dim sMySheets() As String     Dim iNumSheets As Integer

iNumSheets = Sheets.Count     Redim sMySheets(1 To iNumSheets)



For I = 1 To iNumSheets         sMySheets(I) = Sheets(I).Name     Next I

BubbleSort sMySheets

For I = 1 To iNumSheets         Sheets(sMySheets(I)).Move Before:=Sheets(I)

Next I End Sub
Sub BubbleSort(sToSort() As String)

Dim Lower As Integer, Upper As Integer     Dim I As Integer, J As Integer, K As Integer     Dim Temp As String

Lower = LBound(sToSort)

Upper = UBound(sToSort)

For I = Lower To Upper - 1         K = I         For J = I + 1 To Upper             If sToSort(K) > sToSort(J) Then                 K = J             End If         Next J         If I <> K Then             Temp = sToSort(I)

sToSort(I) = sToSort(K)

sToSort(K) = Temp         End If     Next I End Sub

Chiunque abbia programmato per un po ‘di tempo sa che BubbleSort è una buona routine di ordinamento generale, ma ce ne sono di più veloci disponibili.

Ad esempio, se hai diversi fogli di lavoro e iniziano molto disorganizzati, potresti scoprire che l’algoritmo QuickSort è più vantaggioso. Tutto quello che devi fare per modificare quanto sopra per utilizzare QuickSort è aggiungere l’algoritmo QuickSort come subroutine (puoi trovare l’algoritmo in qualsiasi buon libro di programmazione Visual Basic) e quindi chiamare la procedura dall’interno della macro SortSheets principale. (Questo significa cambiare la riga in cui BubbleSort è ora chiamato.)

C’è un’altra differenza tra questa seconda macro e la prima. La prima macro non presta attenzione al caso del testo utilizzato per denominare i fogli di lavoro. Pertanto, il mio foglio di lavoro verrà visualizzato come il mio foglio di lavoro. La seconda macro presta attenzione al maiuscolo / minuscolo e ordina di conseguenza. Ovviamente, questo non è un problema particolarmente grave, poiché nemmeno Excel presta attenzione al caso nei nomi dei fogli di lavoro.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (1959) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: