Notifications
Clear all

Organizar Abas em Ordem Alfabetica

10 Posts
4 Usuários
0 Reactions
7,594 Visualizações
(@mspinheiro)
Posts: 0
New Member
Topic starter
 

Pessoal, bom dia.

Sou iniciante no forum e se por ventura estiver fazendo algo de errado me desculpem.

Gostaria apenas de saber se existe alguma formula, ou algo do tipo, para organizar em ordem alfabetica, abas de uma planilha.

São nomes variados de clientes que eu gostaria de organizar.

Muito obrigado

 
Postado : 25/03/2015 8:53 am
(@edcronos)
Posts: 1006
Noble Member
 

pode tentar essa macro

Sub SortALLSheets()

'Ordena as Abas Alfabeticamente
    Dim iSheet As Long, iBefore As Long
    For iSheet = 1 To ActiveWorkbook.Sheets.Count
        Sheets(iSheet).Visible = True
        For iBefore = 1 To iSheet - 1
            If UCase(Sheets(iBefore).Name) > UCase(Sheets(iSheet).Name) Then
                ActiveWorkbook.Sheets(iSheet).move before:=ActiveWorkbook.Sheets(iBefore)
                Exit For
            End If
        Next iBefore
    Next iSheet
End Sub

 
Postado : 25/03/2015 8:58 am
(@issamu)
Posts: 0
New Member
 
Sub Sort_Active_Book()
Dim i As Integer
Dim j As Integer
Dim iAnswer As VbMsgBoxResult
'
' Prompt the user as which direction they wish to
' sort the worksheets.
'
   iAnswer = MsgBox("Classificar Planilhas em ordem crescente?" & Chr(10) _
     & "Clique em não para classificar em ordem decrescente!", _
     vbYesNoCancel + vbQuestion + vbDefaultButton1, "Sort Worksheets")
   For i = 1 To Sheets.Count
      For j = 1 To Sheets.Count - 1
'
' If the answer is Yes, then sort in ascending order.
'
         If iAnswer = vbYes Then
            If UCase$(Sheets(j).Name) > UCase$(Sheets(j + 1).Name) Then
               Sheets(j).Move After:=Sheets(j + 1)
            End If
'
' If the answer is No, then sort in descending order.
'
        ElseIf iAnswer = vbNo Then
            If UCase$(Sheets(j).Name) < UCase$(Sheets(j + 1).Name) Then
              Sheets(j).Move After:=Sheets(j + 1)
           End If
         End If
      Next j
   Next i
End Sub
 
Postado : 25/03/2015 9:02 am
(@mspinheiro)
Posts: 0
New Member
Topic starter
 

Nao sei se estou fazendo alguma coisa errada, mas ao inserir os codigos acima, retorna o seguinte erro (anexo)

 
Postado : 25/03/2015 10:14 am
(@issamu)
Posts: 0
New Member
 

Olá!
Você deve salvar o arquivo na extensão xlsm (pasta de trabalho habilitada para macro no Excel) para que as macros fiquem gravadas.
Abs!

 
Postado : 25/03/2015 10:26 am
(@tecnico)
Posts: 0
New Member
 

Não sei se seria o mesmo processo,

Mais no meu caso, preciso que minha planilha organize em sequencia numérica, de 0001 em diante,
isso pode ser feito de que forma? E pode ser automático?

 
Postado : 26/03/2015 7:38 am
(@issamu)
Posts: 0
New Member
 

Olá tecnico!
O código que postei funciona para números também.

Se você quiser deixar automático, tem que colocar o código em algum evento do módulo da sua posta de trabalho. Eu sugiro o evento SheetActivate ou então o evento Beforesave.

Segue exemplo do código adaptado para ficar de forma crescente no evento Sheetactivate. Aqui sempre que você mudar de planilha o código vai ser rodado, e eu desativei a parte de aparecer a mensagem.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

Dim i As Integer
Dim j As Integer
Dim iAnswer As VbMsgBoxResult
'
' Prompt the user as which direction they wish to
' sort the worksheets.
'
'   iAnswer = MsgBox("Classificar Planilhas em ordem crescente?" & Chr(10) _
'     & "Clique em não para classificar em ordem decrescente!", _
'     vbYesNoCancel + vbQuestion + vbDefaultButton1, "Sort Worksheets")

iAnswer = vbYes

   For i = 1 To Sheets.Count
      For j = 1 To Sheets.Count - 1
'
' If the answer is Yes, then sort in ascending order.
'
         If iAnswer = vbYes Then
            If UCase$(Sheets(j).Name) > UCase$(Sheets(j + 1).Name) Then
               Sheets(j).Move After:=Sheets(j + 1)
            End If
'
' If the answer is No, then sort in descending order.
'
        ElseIf iAnswer = vbNo Then
            If UCase$(Sheets(j).Name) < UCase$(Sheets(j + 1).Name) Then
              Sheets(j).Move After:=Sheets(j + 1)
           End If
         End If
      Next j
   Next i

End Sub
 
Postado : 26/03/2015 8:04 am
(@tecnico)
Posts: 0
New Member
 

Olá,

O Código funcionou perfeitamente,

O problema que encontrei, é que tenho nesta mesma pasta, planilhas com a de cadastro e outras que não quero que oculte,
neste momento ela esta deixando visivel apenas a planilhas Ordem de serviços.

Gostaria que ela ocultasse apenas as que contém numeros, como por exemplo: 0001, 0002, 0003 ... 1202...5065, etc...

Tem como?

 
Postado : 30/03/2015 7:15 am
(@issamu)
Posts: 0
New Member
 

Olá tecnico! Não entendi bem sua demanda, estávamos falando em ordenar as planilhas e agora você está falando em ocultar... não ficou claro para mim sua real necessidade.

 
Postado : 30/03/2015 7:53 am
(@tecnico)
Posts: 0
New Member
 

Bom dia Issamu,

É verdade, apenas escrevi uma sequência de coisas que preciso resolver.

Mais isso ficou ótimo, mais levando em consideração este problema, como posso fazer para ocultar apenas as abas numéricas?

 
Postado : 06/04/2015 5:24 am