Como classificar planilhas no Excel usando VBA (em ordem alfabética)

Se você trabalha com muitas planilhas no Excel, sabe que o gerenciamento delas pode se tornar um problema.

Assim que tiver mais do que algumas planilhas, você precisará organizá-las manualmente.

Seria muito fácil se houvesse uma maneira de classificar rapidamente as planilhas no Excel.

Embora não haja uma maneira de recurso embutido para fazer isso, isso pode ser feito (facilmente) usando o VBA.

Neste tutorial, darei a você o código e as etapas exatas que você precisa seguir para classificar planilhas no Excel.

Você pode ajustar o código para classificar as planilhas em ordem crescente ou decrescente.

Código VBA para classificar planilhas no Excel

Abaixo está o código que classificará as planilhas em ordem alfabética assim que você executá-las.

Sub SortWorksheetsTabs () Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer ShCount = Sheets.Count For i = 1 To ShCount - 1 For j = i + 1 To ShCount If UCase (Sheets (j). Nome) <UCase (Folhas (i). Nome) Depois Folhas (j) .Mover antes: = Folhas (i) Fim Se Próximo j Próximo i Aplicativo.ScreenUpdating = Verdadeiro Fim Sub

O código acima é um código simples que usa loops For Next para analisar cada planilha em relação a todas as planilhas.

Ele compara o nome de uma planilha com todas as planilhas e a move com base em seu nome em ordem alfabética.

Em seguida, ele passa para a próxima planilha e a compara com todas as planilhas.

Este processo é repetido para todas as planilhas e o resultado final é uma ordem de planilha classificada em ordem alfabética.

Algumas coisas importantes a saber sobre este código:

  1. A função UCase é usada para garantir que as letras maiúsculas e minúsculas não sejam tratadas de maneira diferente.
  2. O valor de Application.ScreenUpdating é definido como False no início do código e alterado para True no final do código. Isso garante que, enquanto o código estiver em execução, você não o verá acontecendo na tela. Isso também ajuda a acelerar a execução do código.

Se quiser classificar as planilhas em ordem decrescente, você só precisa alterar o sinal (maior que).

O código a seguir classificaria as planilhas em ordem decrescente:

'Este código classificará as planilhas em ordem alfabética Sub SortWorksheetsTabs () Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer ShCount = Sheets.Count For i = 1 To ShCount - 1 For j = i + 1 To ShCount If UCase (Sheets (j) .Name)> UCase (Sheets (i) .Name) Then Sheets (j) .Move before: = Sheets (i) End If Next j Next i Application.ScreenUpdating = True End Sub

Você também pode dar ao usuário a opção de escolher se deseja classificar em ordem crescente / decrescente.

O código a seguir mostraria uma caixa de mensagem e o usuário pode selecionar o pedido de classificação.

Sub SortWorksheetsTabs () Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer Dim SortOrder As VbMsgBoxResult SortOrder = MsgBox ("Selecione Sim para Ordem Crescente e Não para Ordem Decrescente", vbYesNoCancel) ShCount = Sheets.Count For i = 1 To ShCount - 1 For j = i + 1 To ShCount If SortOrder = vbYes Then If UCase (Sheets (j) .Name) UCase (Sheets (i) .Name) Then Sheets (j) .Move before: = Sheets (i) End If End If Next j Next i Application.ScreenUpdating = True End Sub

O código acima quando executado mostra uma mensagem conforme mostrado abaixo. Ele classifica com base na seleção (Sim para Crescente e Não para Decrescente).

Caso você clique em Cancelar, o código pára e nada acontece.

Observação: A classificação não pode ser desfeita. Caso queira manter o pedido original também, faça uma cópia da apostila.

Uma palavra de cautela: O código acima funciona na maioria dos casos. Uma área em que você obterá o resultado incorreto é quando você tem nomes de guia como Q12021-2022, Q22021-2022, Q12021-2022, Q22021-2022. Idealmente, você gostaria que todas as guias dos mesmos anos estivessem juntas, mas isso não será feito, pois Q12021-2022 será colocado antes de Q22021-2022.

Onde colocar o código VBA

O Excel tem um back-end VBA chamado editor VBA.

Você precisa copiar e colar o código VBA na janela de código do módulo do Editor VB.

Aqui estão as etapas para fazer isso:

  1. Clique na guia ‘Desenvolvedor’. (Não consegue ver a guia do desenvolvedor? Clique aqui para saber como obtê-la).
  2. Clique na opção Visual Basic. Isso abrirá o editor VB no backend.
  3. No painel Project Explorer no VB Editor, clique com o botão direito em qualquer objeto da pasta de trabalho na qual deseja inserir o código. (Se você não vir o Project Explorer, vá para a guia ‘View’ e clique em ‘Project Explorer’.)
  4. Vá para Inserir e clique em Módulo. Isso irá inserir um objeto de módulo para sua pasta de trabalho.
  5. Copie e cole o código na janela do módulo.

Como executar o código VBA

No Excel, existem várias maneiras de executar o código VBA.

Você pode executar o código diretamente no Editor do Visual Basic (também chamado de Editor VB).

Você pode inserir um botão ou uma forma na planilha e atribuir a macro a ele. Ao clicar no botão, a macro será executada instantaneamente.

Você também pode adicionar a macro à Barra de Ferramentas de Acesso Rápido (QAT). Agora, sempre que você precisar classificar as guias da planilha, basta clicar no ícone do código de macro no QAT.

Você pode ler tudo sobre como executar a macro aqui - Como executar uma macro no Excel (ou assista ao vídeo abaixo).
Você também pode gostar dos seguintes tutoriais do Excel / VBA:

  • Como classificar dados no Excel usando VBA.
  • Classifique os dados automaticamente em ordem alfabética usando a fórmula.
  • Como fazer uma classificação de dados de vários níveis no Excel.
  • Uma introdução às opções de classificação de dados do Excel.
  • Filtro automático do Excel VBA: um guia completo com exemplos
  • Como agrupar planilhas no Excel
  • Como inverter dados no Excel
wave wave wave wave wave