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 CheatsheetDescrição | Exemplo de Código |
---|---|
Planilhas de referência e ativação | |
Nome da guia | Planilhas ("Entrada"). Ative |
Nome de código VBA | Sheet1.Activate |
Posição do Índice | Planilhas (1) .Ativar |
Selecionar folha | |
Selecionar folha | Planilhas ("Entrada"). Selecione |
Definir como variável | Dim ws como planilha Definir ws = ActiveSheet |
Nome / Renomear | ActiveSheet.Name = "NewName" |
Próxima Folha | ActiveSheet.Next.Activate |
Percorrer todas as planilhas | Dim ws como planilha Para cada ws nas planilhas Msgbox ws.name Próximo ws |
Loop através de folhas selecionadas | Dim ws como planilha Para cada ws em ActiveWindow.SelectedSheets MsgBox ws.Name Próximo ws |
Obter ActiveSheet | MsgBox ActiveSheet.Name |
Adicionar Folha | Sheets.Add |
Adicionar folha e nome | Sheets.Add.Name = "NewSheet" |
Adicionar planilha com o nome da célula | Sheets.Add.Name = range ("a3"). Value |
Adicionar folha após outra | Sheets.Add After: = Sheets ("Input") |
Adicionar folha após e nome | Sheets.Add (After: = Sheets ("Input")). Name = "NewSheet" |
Adicionar folha antes e nome | Sheets.Add (Before: = Sheets ("Input")). Name = "NewSheet" |
Adicionar folha ao final da pasta de trabalho | Sheets.Add After: = Sheets (Sheets.Count) |
Adicionar folha ao início da pasta de trabalho | Sheets.Add (Before: = Sheets (1)). Name = "FirstSheet" |
Adicionar folha à variável | Dim ws como planilha Definir ws = Sheets.Add |
Copiar planilhas | |
Mover folha para o final da pasta de trabalho | Folhas ("Folha1"). Mover depois: = Folhas (Folhas.Contar) |
Para a nova pasta de trabalho | Folhas ("Folha1"). Copiar |
Folhas selecionadas para nova pasta de trabalho | ActiveWindow.SelectedSheets.Copy |
Antes de outra folha | Folhas ("Folha1"). Copiar antes: = Folhas ("Folha2") |
Antes da Primeira Folha | Folhas ("Folha1"). Copiar antes: = Folhas (1) |
Depois da última folha | Planilhas ("Planilha1"). Copiar depois: = Planilhas (Planilhas.Contagem) |
Copiar e Nome | Planilhas ("Planilha1"). Copiar depois: = Planilhas (Planilhas.Contagem) ActiveSheet.Name = "LastSheet" |
Copiar e nomear do valor da célula | Planilhas ("Planilha1"). Copiar depois: = Planilhas (Planilhas.Contagem) ActiveSheet.Name = Range ("A1"). Value |
Para outro livro de exercícios | Folhas ("Folha1"). Copiar antes: = Pastas de trabalho ("Exemplo.xlsm"). Folhas (1) |
Ocultar / exibir planilhas | |
Esconder a Folha | Folhas ("Folha1"). Visible = False ou Planilhas ("Planilha1"). Visible = xlSheetHidden |
Exibir folha | Folhas ("Folha1"). Visível = Verdadeiro ou Planilhas ("Planilha1"). Visível = xlSheetVisible |
Folha Muito Escondida | Planilhas (“Folha1”). Visível = xlSheetVeryHidden |
Excluir ou limpar planilhas | |
Apagar Folha | Folhas ("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 Transparente | Folhas ("Folha1"). Células. Limpar |
Limpar o conteúdo da folha apenas | Folhas ("Folha1"). Cells.ClearContents |
Limpar Folha UsedRange | Folhas ("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 VBA | Folhas ("Folha1"). Proteger UserInterfaceOnly: = True |
Desproteger todas as planilhas | Dim ws como planilha Para cada ws nas planilhas ws.Desproteger "senha" Próximo ws |