Ciao a tutti, ho un file libre calc che contiene svariati fogli di lavoro (tutti nominati) che vorrei ordinare in ordine alfabetico.
E’ possibile? Non riesco a trovare una funzione che me lo faccia.
GRAZIE!
Ciao, mi sa che con le funzioni non puoi farlo, ti serve una macro. Prova a vedere qui
Penso anche io!
Grazie…ho provato ad inserire quelle macro, ma niente, mi dice errore di sintassi,
non sono per niente pratica, perciò non capisco il perchè
Avete macro da suggerirmi?
La macro segnalata funziona perfettamente, basta aggiungere la “testa” e la “coda”:
Se la mia riposta ti ha aiutato, votala con (qui a sinistra)
Sub Main
If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then
GlobalScope.BasicLibraries.LoadLibrary("Tools")
End If
Sheets = ThisComponent.Sheets
Names = Sheets.ElementNames
SortedList = BubbleSortList(Names) 'BubbleSortList is a macro in the Tools Library'
for i = 0 to UBound(SortedList)
Sheets.MoveByName(SortedList(i), i)
next i
End Sub
GRAZIEEEEEEEEEEE
Mi hai svoltato la giornata
@SARA2, This in VBA, has option Ascending or Descending.
Rem Attribute VBA_ModuleType=VBADocumentModule
Option VBASupport 1
Option Explicit
'================================================|
Sub OrdenarPlanilhasPelosNomes()
' Código para ordenação das planilhas de uma pasta
' de trabalho com base nos seus nomes
'================================================|
Dim k As Integer
Dim i As Integer
Dim Tipo As Integer
Dim Mensagem As String
'Display message box so user can select desired sort type
Mensagem = "Press Yes for ascending sort" & vbLf & _
"or not for descending order"
Tipo = MsgBox(Mensagem, vbYesNo + vbApplicationModal, _
"Sort spreadsheets")
Select Case Tipo
Case vbYes
'Opção de ordenação crescente
For k = 1 To ThisWorkbook.Sheets.Count
For i = 1 To ThisWorkbook.Sheets.Count - 1
If Sheets(i).Name > Sheets(i + 1).Name Then
Sheets(i + 1).Move Before:=Sheets(i)
End If
Next i
Next k
Case vbNo
'Opção de ordenação decrescente
For k = 1 To ThisWorkbook.Sheets.Count
For i = 1 To ThisWorkbook.Sheets.Count - 1
If Sheets(i).Name < Sheets(i + 1).Name Then
Sheets(i + 1).Move Before:=Sheets(i)
End If
Next i
Next k
End Select
End Sub