In questo articolo, abbiamo fornito dettagli su come ordinare i fogli di lavoro nella cartella di lavoro in ordine crescente o decrescente, a seconda del nome del foglio di lavoro.

Nella cartella di lavoro allegata sono presenti due moduli: – Modulo1 contiene la macro “SortWorksheets” che è assegnata al pulsante “Invia” nel foglio “Macro”.

Questa macro ordina tutti i fogli di lavoro tranne il primo foglio di lavoro che è il foglio principale denominato “Macro”.

Quando l’utente fa clic sul pulsante “Invia”, tutti i fogli dopo il foglio “Macro” verranno ordinati in ordine crescente o decrescente come scelto dall’utente nella casella combinata.

ArrowSortingOrder

Module2 contiene due macro “AscendingSortOfWorksheets” e “DecendingSortOfWorksheets”. Eseguendo la macro “AscendingSortOfWorksheets”, verranno ordinati tutti i fogli di lavoro presenti nella cartella di lavoro in ordine crescente. Quando si esegue la macro “DecendingSortOfWorksheets”, verranno ordinati tutti i fogli di lavoro presenti nella cartella di lavoro in ordine decrescente.

Spiegazione logica

L’algoritmo di ordinamento a bolle viene utilizzato per ordinare i fogli di lavoro nella cartella di lavoro.

L’algoritmo di ordinamento a bolle confronta ogni elemento nell’array con altri elementi nell’array e li scambia a seconda se ordinare in ordine crescente o decrescente. In ogni passaggio, verrà visualizzato il valore più piccolo o più grande all’inizio dell’array. L’algoritmo si ripete finché tutti gli elementi non vengono ordinati.

In questo articolo, il nostro obiettivo è ordinare i fogli di lavoro nella cartella di lavoro in base al loro nome. La cartella di lavoro che stiamo utilizzando è composta da diversi fogli di lavoro con nomi come Financial Dashboard, Human Resources e Sales Dashboard.

ArrowRawData

Per raggiungere questo obiettivo, abbiamo utilizzato l’algoritmo Bubble sort per ordinare i fogli di lavoro.

Spiegazione del codice

Macro SortWorksheets

Questa macro verrà eseguita quando l’utente fa clic sul pulsante di invio. Questa macro ordinerà tutti i fogli di lavoro nella cartella di lavoro in base ai loro nomi tranne il primo foglio di lavoro nella cartella di lavoro. A seconda del valore selezionato dall’utente nella casella combinata, i fogli di lavoro verranno ordinati in ordine crescente o decrescente.

Per aggiungere una casella combinata, segui i passaggi seguenti: -. Vai alla scheda Sviluppatore> Fai clic su Inserisci> Fai clic sull’icona della casella combinata sotto il controllo del modulo

ArrowInsertingCombobox

  1. Fare clic con il pulsante destro del mouse sulla casella combinata e fare clic sul controllo del formato.

ArrowFormattingControl

  1. Vai alla scheda di controllo, assegna l’elemento e collega la casella combinata con la cella XFC1.

ArrowCellLink

ComboBoxValue = Intervallo (“XFC1”). La casella combinata del valore nel foglio di lavoro “Macro” è collegata alla cella XFC1. Quindi, per ottenere il valore dalla cella XFC1, viene utilizzata la variabile ComboBoxValue.

For i = 2 To SCount – 1 FOR loop inizia con la variabile i, valore che inizia da 2 poiché vogliamo escludere il primo foglio di lavoro della cartella di lavoro dall’ordinamento.

Se ComboBoxValue = 1, la condizione IF viene utilizzata per verificare se ordinare in ordine crescente o decrescente. Se il valore ComboBoxValue è 1, ordina in ordine crescente, altrimenti in ordine decrescente.

Fogli di lavoro ordinati in ordine crescente

ArrowAscendingOrder

Fogli di lavoro ordinati in ordine decrescente

ArrowDescendingOrder

AscendingSortOfWorksheets e DecendingSortOfWorksheets

Le macro AscendingSortOfWorksheets e DecendingSortOfWorksheets possono essere eseguite premendo il tasto di scelta rapida Alt + F8 o vai alla scheda Sviluppatore> fai clic su Macro> selezionando la macro e fai clic su Esegui. Ordineranno tutti i fogli di lavoro presenti all’interno della cartella di lavoro. Queste macro possono essere eseguite anche su altre cartelle di lavoro.

Fogli di lavoro ordinati dopo l’esecuzione della macro AscendingSortOfWorksheets

ArrowAscendingCompleteSort

Fogli di lavoro ordinati in ordine crescente DecendingSortOfWorksheets macro

ArrowDescendingCompleteSort

Segui sotto per il codice

Sub AscendingSortOfWorksheets()

'Sort worksheets in a workbook in ascending order

Dim SCount, i, j As Integer

'For disabling screen updates

Application.ScreenUpdating = False

'Getting total no. of worsheets in workbook

SCount = Worksheets.Count

'Checking condition whether count of worksheets is greater than 1, If count is one then exit the procedure

If SCount = 1 Then Exit Sub

'Using Bubble sort as sorting algorithm

'Looping through all worksheets

For i = 1 To SCount - 1

'Making comparison of selected sheet name with other sheets for moving selected sheet to appropriate position

For j = i + 1 To SCount

If Worksheets(j).Name < Worksheets(i).Name Then

Worksheets(j).Move Before:=Worksheets(i)

End If

Next j

Next i

End Sub

Sub DecendingSortOfWorksheets()

'Sort worksheets in a workbook in descending order

Dim SCount, i, j As Integer

'For disabling screen updates

Application.ScreenUpdating = False

'Getting total no. of worsheets in workbook

SCount = Worksheets.Count

'Checking condition whether count of worksheets is greater than 1, If count is one then exit the procedure

If SCount = 1 Then Exit Sub

'Using Bubble sort as sorting algorithm

'Looping through all worksheets

For i = 1 To SCount - 1

'Making comparison of selected sheet name with other sheets for moving selected sheet to appropriate position

For j = i + 1 To SCount

If Worksheets(j).Name > Worksheets(i).Name Then

Worksheets(j).Move Before:=Worksheets(i)

End If

Next j

Next i

End Sub

Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.

Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]