Folhas VBA - o guia definitivo

Este é o guia definitivo para trabalhar com planilhas / planilhas no Excel.

No final deste guia, criamos uma folha de dicas de comandos comuns para trabalhar com planilhas.

Folhas vs. Fichas de trabalho

Existem duas maneiras de fazer referência ao Planilhas usando o VBA. O primeiro é com o objeto Sheets:

1 Planilhas ("Folha1"). Ative

A outra é com o objeto Worksheets:

1 Planilhas ("Folha1"). Ativar

99% das vezes, esses dois objetos são idênticos. Na verdade, se você pesquisou online por exemplos de código VBA, provavelmente já viu os dois objetos usados. Aqui está a diferença:

A coleção de planilhas contém planilhas e planilhas de gráficos.

Portanto, use o Planilhas se quiser incluir planilhas e gráficos regulares. Use as planilhas se quiser excluir as planilhas de gráficos. No restante deste guia, usaremos Planilhas e Planilhas de trabalho alternadamente.

Folhas de Referência

Existem várias maneiras de fazer referência ao Planilhas:

  • ActiveSheet
  • Nome da guia da folha
  • Número de índice da folha
  • Nome do código da folha

ActiveSheet

A ActiveSheet é a planilha que está ativa no momento. Em outras palavras, se você pausou seu código e olhou para o Excel, é a planilha que fica visível. O exemplo de código a seguir exibirá uma Messagebox com o nome ActiveSheet.

1 MsgBox ActiveSheet.Name

Nome da Folha

Provavelmente, você está mais familiarizado com a referência a Planilhas pelo nome da guia:

1 Planilhas ("TabName"). Ativar

Número de índice da folha

O número do índice da folha é a posição da folha na pasta de trabalho. 1 é a primeira folha. 2 é a segunda folha, etc .:

1 Planilhas (1) .Ativar

Número do índice da folha - última folha na pasta de trabalho

Para fazer referência à última planilha na pasta de trabalho, use Sheets.Count para obter o último número de índice:

1 Planilhas (Planilhas.Contagem) .Ativar

Folha “Nome do Código”

O nome do código da folha é o nome do objeto em VBA:

1 CodeName.Activate

Folhas de referência em outras pastas de trabalho

Também é fácil consultar o Planilhas em outras pastas de trabalho. Para fazer isso, você precisa usar o objeto Workbooks:

1 Cadernos de trabalho ("VBA_Examples.xlsm"). Planilhas ("Planilha1"). Ativar

Importante: A pasta de trabalho deve ser aberta antes que você possa consultá-la no Planilhas.

Ativar vs. Selecionar planilha

Em outro artigo, discutiremos tudo sobre como ativar e selecionar planilhas. A versão curta é esta:

Quando você ativa uma planilha, ela se torna a ActiveSheet. Esta é a planilha que você veria se olhasse seu programa Excel. Apenas uma folha pode ser ativada por vez.

Ative uma planilha

1 Planilhas ("Folha1"). Ative

Quando você seleciona uma planilha, ela também se torna a ActiveSheet. No entanto, você pode selecionar várias folhas de uma vez. Quando várias folhas são selecionadas de uma vez, a folha “superior” é a ActiveSheet. No entanto, você pode alternar a ActiveSheet dentro das planilhas selecionadas.

Selecione uma folha

1 Folhas ("Folha1"). Selecione

Selecione várias folhas

Use uma matriz para selecionar várias folhas de uma vez:

1 Planilhas (Matriz ("Folha2", "Folha3")). Selecione

Variável de planilha

Atribuir uma planilha a uma variável permite que você faça referência à planilha por seu nome de variável. Isso pode economizar muita digitação e tornar seu código mais fácil de ler. Existem também muitos outros motivos pelos quais você pode querer usar variáveis.

Para declarar uma variável de planilha:

1 Dim ws como planilha

Atribua uma planilha a uma variável:

1 Definir ws = Folhas ("Folha1")

Agora você pode fazer referência à variável da planilha em seu código:

1 ws.Activate

Faça um loop em todas as planilhas da pasta de trabalho

As variáveis ​​da planilha são essenciais quando você deseja percorrer todas as planilhas em uma pasta de trabalho. A maneira mais fácil de fazer isso é:

12345 Dim ws como planilhaPara cada ws nas planilhasMsgBox ws.namePróximo ws

Este código percorrerá todas as planilhas da pasta de trabalho, exibindo o nome de cada planilha em uma caixa de mensagem. O loop por todas as planilhas em uma pasta de trabalho é muito útil ao bloquear / desbloquear ou ocultar / exibir várias planilhas de uma vez.

Proteção de planilha

Proteção da pasta de trabalho

A proteção da pasta de trabalho bloqueia a pasta de trabalho contra alterações estruturais, como adicionar, excluir, mover ou ocultar planilhas.

Você pode ativar a proteção da pasta de trabalho usando o VBA:

1 ActiveWorkbook.Protect Password: = "Senha"

ou desative a proteção da pasta de trabalho:

1 ActiveWorkbook.UnProtect Password: = "Senha"

Nota: Você também pode proteger / desproteger sem uma senha, omitindo o argumento Senha:

1 ActiveWorkbook.Protect

Proteção de planilha

A proteção em nível de planilha evita alterações em planilhas individuais.

Proteger planilha

1 Planilhas ("Folha1"). Proteger "Senha"

Folha de trabalho desprotegida

1 Planilhas ("Folha1"). Desproteger "Senha"

Há uma variedade de opções ao proteger planilhas (permitir alterações de formatação, permitir que o usuário insira linhas, etc.). Recomendamos usar o Gravador de Macro para registrar as configurações desejadas.

Discutimos a proteção da planilha em mais detalhes aqui.

Propriedade visível da planilha

Você já deve saber que as planilhas podem ser ocultadas:

Na verdade, existem três configurações de visibilidade da planilha: Visível, Oculto e VeryHidden.As planilhas ocultas podem ser reexibidas por qualquer usuário regular do Excel - clicando com o botão direito do mouse na área da guia da planilha (mostrada acima). As planilhas VeryHidden só podem ser reexibidas com código VBA ou de dentro do Editor VBA. Use os seguintes exemplos de código para ocultar / exibir planilhas:

Exibir planilha

1 Planilhas ("Planilha1"). Visível = xlSheetVisible

Ocultar planilha

1 Planilhas ("Planilha1"). Visible = xlSheetHidden

Folha de trabalho muito oculta

1 Planilhas ("Planilha1"). Visível = xlSheetVeryHidden

Eventos em nível de planilha

Os eventos são acionadores que podem fazer com que “Procedimentos de evento” sejam executados. Por exemplo, você pode fazer com que o código seja executado sempre que qualquer célula de uma planilha for alterada ou quando uma planilha for ativada.

Os procedimentos de evento de planilha devem ser colocados em um módulo de planilha:

Existem vários eventos de planilha. Para ver uma lista completa, vá para um módulo de planilha, selecione “Planilha” no primeiro menu suspenso. Em seguida, selecione um procedimento de evento no segundo menu suspenso para inseri-lo no módulo.

Planilha de ativação de evento

Os eventos de ativação da planilha são executados sempre que a planilha é aberta.

123 Sub-planilha privada_Activate ()Intervalo ("A1"). SelecioneEnd Sub

Este código selecionará a célula A1 (redefinindo a área de visualização no canto superior esquerdo da planilha) cada vez que a planilha for aberta.

Evento de mudança de planilha

Os eventos de alteração da planilha são executados sempre que um valor de célula é alterado na planilha. Leia nosso tutorial sobre Eventos de alteração de planilha para obter mais informações.

Folha de trabalho de referência

Abaixo você encontrará uma folha de dicas contendo exemplos de códigos comuns para trabalhar com folhas em VBA

Planilhas VBA Cheatsheet

Planilhas VBA Cheatsheet
DescriçãoExemplo de Código
Planilhas de referência e ativação
Nome da guiaPlanilhas ("Entrada"). Ative
Nome de código VBASheet1.Activate
Posição do ÍndicePlanilhas (1) .Ativar
Selecionar folha
Selecionar folhaPlanilhas ("Entrada"). Selecione
Definir como variávelDim ws como planilha
Definir ws = ActiveSheet
Nome / RenomearActiveSheet.Name = "NewName"
Próxima FolhaActiveSheet.Next.Activate
Percorrer todas as planilhasDim ws como planilha
Para cada ws nas planilhas
Msgbox ws.name
Próximo ws
Loop através de folhas selecionadasDim ws como planilha
Para cada ws em ActiveWindow.SelectedSheets
MsgBox ws.Name
Próximo ws
Obter ActiveSheetMsgBox ActiveSheet.Name
Adicionar FolhaSheets.Add
Adicionar folha e nomeSheets.Add.Name = "NewSheet"
Adicionar planilha com o nome da célulaSheets.Add.Name = range ("a3"). Value
Adicionar folha após outraSheets.Add After: = Sheets ("Input")
Adicionar folha após e nomeSheets.Add (After: = Sheets ("Input")). Name = "NewSheet"
Adicionar folha antes e nomeSheets.Add (Before: = Sheets ("Input")). Name = "NewSheet"
Adicionar folha ao final da pasta de trabalhoSheets.Add After: = Sheets (Sheets.Count)
Adicionar folha ao início da pasta de trabalhoSheets.Add (Before: = Sheets (1)). Name = "FirstSheet"
Adicionar folha à variávelDim ws como planilha
Definir ws = Sheets.Add
Copiar planilhas
Mover folha para o final da pasta de trabalhoFolhas ("Folha1"). Mover depois: = Folhas (Folhas.Contar)
Para a nova pasta de trabalhoFolhas ("Folha1"). Copiar
Folhas selecionadas para nova pasta de trabalhoActiveWindow.SelectedSheets.Copy
Antes de outra folhaFolhas ("Folha1"). Copiar antes: = Folhas ("Folha2")
Antes da Primeira FolhaFolhas ("Folha1"). Copiar antes: = Folhas (1)
Depois da última folhaPlanilhas ("Planilha1"). Copiar depois: = Planilhas (Planilhas.Contagem)
Copiar e NomePlanilhas ("Planilha1"). Copiar depois: = Planilhas (Planilhas.Contagem)
ActiveSheet.Name = "LastSheet"
Copiar e nomear do valor da célulaPlanilhas ("Planilha1"). Copiar depois: = Planilhas (Planilhas.Contagem)
ActiveSheet.Name = Range ("A1"). Value
Para outro livro de exercíciosFolhas ("Folha1"). Copiar antes: = Pastas de trabalho ("Exemplo.xlsm"). Folhas (1)
Ocultar / exibir planilhas
Esconder a FolhaFolhas ("Folha1"). Visible = False
ou
Planilhas ("Planilha1"). Visible = xlSheetHidden
Exibir folhaFolhas ("Folha1"). Visível = Verdadeiro
ou
Planilhas ("Planilha1"). Visível = xlSheetVisible
Folha Muito EscondidaPlanilhas (“Folha1”). Visível = xlSheetVeryHidden
Excluir ou limpar planilhas
Apagar FolhaFolhas ("Folha1"). Excluir
Excluir planilha (tratamento de erros)On Error Resume Next
Folhas ("Folha1"). Excluir
No erro GoTo 0
Excluir folha (sem aviso)Application.DisplayAlerts = False
Folhas ("Folha1"). Excluir
Application.DisplayAlerts = True
Folha TransparenteFolhas ("Folha1"). Células. Limpar
Limpar o conteúdo da folha apenasFolhas ("Folha1"). Cells.ClearContents
Limpar Folha UsedRangeFolhas ("Folha1"). UsedRange.Clear
Proteger ou desproteger planilhas
Desproteger (sem senha)Folhas ("Folha1"). Desproteger
Desproteger (senha)Folhas ("Folha1"). Desproteger "Senha"
Proteger (sem senha)Folhas ("Folha1"). Proteger
Proteger (senha)Folhas ("Folha1"). Proteja "Senha"
Proteger, mas permitir acesso VBAFolhas ("Folha1"). Proteger UserInterfaceOnly: = True
Desproteger todas as planilhasDim ws como planilha
Para cada ws nas planilhas
ws.Desproteger "senha"
Próximo ws

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave