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, ci sono due moduli:-
Modulo 1 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.
Modulo2 contiene due macro "AscendingSortOfWorksheets" e "DecendingSortOfWorksheets". Eseguendo la macro "AscendingSortOfWorksheets", tutti i fogli di lavoro presenti nella cartella di lavoro verranno ordinati in ordine crescente. Eseguendo la macro "DecendingSortOfWorksheets", tutti i fogli di lavoro presenti nella cartella di lavoro verranno ordinati 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, il valore più piccolo o più grande verrà visualizzato in cima all'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 consiste in diversi fogli di lavoro con nomi come Financial Dashboard, Human Resources e Sales Dashboard.
Per raggiungere questo obiettivo, abbiamo utilizzato l'algoritmo di ordinamento a bolle per ordinare i fogli di lavoro.
Spiegazione del codice
Ordina macro fogli di lavoro
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 eccetto 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
-
Fare clic con il pulsante destro del mouse sulla casella combinata e fare clic su Controllo formato.
-
Vai alla scheda di controllo, Assegna l'elemento e collega la casella combinata con la cella XFC1.
ComboBoxValue = Range("XFC1").Value
La casella combinata nel foglio di lavoro "Macro" è collegata alla cella XFC1. Quindi, per ottenere il valore dalla cella XFC1, viene utilizzata la variabile ComboBoxValue.
Per i = 2 Per contare - 1
Il ciclo FOR inizia con la variabile i, valore a partire da 2 poiché vogliamo escludere dall'ordinamento il primo foglio di lavoro della cartella di lavoro.
Se ComboBoxValue = 1 Allora
La condizione IF viene utilizzata per verificare se ordinare in ordine crescente o decrescente. SE il valore ComboBoxValue è 1, ordinare in ordine crescente altrimenti in ordine decrescente.
Fogli di lavoro ordinati in ordine crescente
Fogli di lavoro ordinati in ordine decrescente
SortOfWorksheets crescente e SortOfWorksheets decrescente
Le macro AscendingSortOfWorksheets e DecendingSortOfWorksheets possono essere eseguite premendo il tasto di scelta rapida Alt + F8 o Vai alla scheda Sviluppatore > Fare clic su Macro > selezionare la macro e fare clic su Esegui. Ordinano tutti i fogli di lavoro presenti nella cartella di lavoro. Queste macro possono essere eseguite anche su altre cartelle di lavoro.
Fogli di lavoro ordinati dopo aver eseguito la macro AscendingSortOfWorksheets
Fogli di lavoro ordinati in ordine crescente Macro DecendingSortOfWorksheets
Si prega di seguire sotto per il codice
Sub AscendingSortOfWorksheets() 'Ordina i fogli di lavoro in una cartella di lavoro in ordine crescente Dim SCount, i, j As Integer 'Per disabilitare gli aggiornamenti dello schermo Application.ScreenUpdating = False 'Ottenendo il totale n. di fogli di lavoro nella cartella di lavoro SCount = Worksheets.Count 'Verifica della condizione se il conteggio dei fogli di lavoro è maggiore di 1, se il conteggio è uno, quindi esci dalla procedura Se SCount = 1 Quindi esci da Sub 'Utilizzo dell'ordinamento a bolle come algoritmo di ordinamento 'Esplora tutti i fogli di lavoro per i = 1 To SCount - 1 'Confronto del nome del foglio selezionato con altri fogli per spostare il foglio selezionato nella posizione appropriata Per j = i + 1 To SCount If Worksheets(j).NameFogli di lavoro(i).Nome Then Worksheets(j).Sposta prima:=Fogli di lavoro(i) End If Next j Next i End Sub
Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook. Inoltre, puoi seguirci su Twitter e Facebook.
Ci piacerebbe avere tue notizie, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici al sito di posta elettronica