Notifications
Clear all

REORGANIZAR ABAS

4 Posts
3 Usuários
0 Reactions
911 Visualizações
(@gpclouro)
Posts: 0
New Member
Topic starter
 

Pessoal, bom dia!

Alguém sabe se existe alguma maneira (que não seja manual) de reorganizar as abas de um arquivo?

Exemplo: Tenho um arquivo que cada aba consta uma numeração (nome aba 1: filial 5, nome aba 2: filial 4, nome aba 3: filial 3, nome aba 4: filial 2).

Eu gostaria de inverter a ordem das abas, para que elas ficassem em ordem crescente! Será que existe alguma maneira?

Desde já agradeço à todos!

 
Postado : 20/05/2016 6:46 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Veja

Fonte: http://www.vbaexpress.com/kb/getarticle.php?kb_id=72

Sub SortWorksheets()
     
    Dim N As Integer
    Dim M As Integer
    Dim FirstWSToSort As Integer
    Dim LastWSToSort As Integer
    Dim SortDescending As Boolean
     
    SortDescending = False
     
    If ActiveWindow.SelectedSheets.Count = 1 Then
         
         'Change the 1 to the worksheet you want sorted first
        FirstWSToSort = 1
        LastWSToSort = Worksheets.Count
    Else
        With ActiveWindow.SelectedSheets
            For N = 2 To .Count
                If .Item(N - 1).Index <> .Item(N).Index - 1 Then
                    MsgBox "You cannot sort non-adjacent sheets"
                    Exit Sub
                End If
            Next N
            FirstWSToSort = .Item(1).Index
            LastWSToSort = .Item(.Count).Index
        End With
    End If
     
    For M = FirstWSToSort To LastWSToSort
        For N = M To LastWSToSort
            If SortDescending = True Then
                If UCase(Worksheets(N).Name) > UCase(Worksheets(M).Name) Then
                    Worksheets(N).Move Before:=Worksheets(M)
                End If
            Else
                If UCase(Worksheets(N).Name) < UCase(Worksheets(M).Name) Then
                    Worksheets(N).Move Before:=Worksheets(M)
                End If
            End If
        Next N
    Next M
     
End Sub

Att

 
Postado : 20/05/2016 7:32 am
(@osvaldomp)
Posts: 857
Prominent Member
 

Instale o código abaixo em um módulo comum, assim:
1. copie o código daqui
2. a partir da planilha em que estão os dados tecle 'Alt+F11' para acessar o editor de VBA
3. no menu do editor >> Inserir >> Módulo
4. cole o código na janela em branco que vai se abrir
5. feito! 'Alt+Q' para retornar para a planilha e testar

para rodar o código:
6. tecle 'Alt+F8' >> selecione a macro correspondente >> Executar, ou insira um botão na planilha e vincule-o à macro ou vincule-a a um atalho de teclado (Alt+F8 > Opções).

Sub OrdenaPlansAsc()
 Dim i As Integer, j As Integer
  For i = 1 To Sheets.Count
   For j = 1 To Sheets.Count - 1
    If UCase$(Sheets(j).Name) > UCase$(Sheets(j + 1).Name) Then
     Sheets(j).Move After:=Sheets(j + 1)
    End If
   Next j
  Next i
End Sub
 
Postado : 20/05/2016 8:12 am
(@gpclouro)
Posts: 0
New Member
Topic starter
 

Valeu gente!! As duas macros funcionaram exatamente da forma que eu queria!

Muito obrigado pela ajuda!

Fiquem com Deus!

Abs

 
Postado : 20/05/2016 8:52 am