Planilhas VBA – O Guia Definitivo

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on May 11, 2023

Este é o guia definitivo para trabalhar com planilhas do Excel em VBA.

Na parte inferior deste guia, criamos uma folha de dicas de comandos comuns para trabalhar com planilhas.

Sheets versus Worksheets

Há duas maneiras de fazer referência a planilhas usando o VBA. A primeira é com o objeto Sheets:

Sheets("Planilha1").Activate

A outra é com o objeto Worksheets:

Worksheets("Planilha1").Activate

em 99% das vezes, esses dois objetos são idênticos. De fato, se você pesquisou on-line por exemplos de código VBA, provavelmente viu os dois objetos sendo usados. Aqui está a diferença:

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

diferenca sheets worksheets

Portanto, use Sheets se quiser incluir planilhas regulares E planilhas de gráficos. Use Worksheets se quiser excluir planilhas de gráficos. No restante deste guia, usaremos Sheets e Worksheets de forma intercambiável.

Fazendo Referência a Planilhas

Há várias maneiras diferentes de fazer referência a objetos Sheets:

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

ActiveSheet

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

MsgBox ActiveSheet.Name

Nome da Guia da Planilha

Você provavelmente está mais familiarizado com a referência a planilhas pelo nome da guia:

nome guia planilha

Sheets("NomeDaGuia").Activate

Esse é o nome da planilha que fica visível para os usuários do Excel. Insira-o no objeto sheets, como uma cadeia de texto, entre aspas.

Número de Índice da Planilha

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

planilha posicao um

Sheets(1).Activate

Número de Índice da Planilha – Última Planilha na Pasta de Trabalho

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

Sheets(Sheets.Count).Activate

Nome do Código da Planilha

O nome de código da planilha é o nome do objeto no VBA:

nome codigo planilha

CodeName.Activate

Referenciar Planilhas em Outras Pastas de Trabalho

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

Workbooks("VBA_Examplos.xlsm").Worksheets("Planilha1").Activate

Importante: A pasta de trabalho deve estar aberta para que você possa fazer referência a suas planilhas.

Ativar versus Selecionar planilha

Em outro artigo, discutiremos tudo sobre a ativação e a seleção de planilhas. A versão resumida é a seguinte:

Quando você ativa uma planilha, ela se torna a ActiveSheet. Essa é a planilha que você veria se olhasse para o programa Excel. Somente uma planilha pode ser ativada por vez.

Ativar uma Planilha

Sheets("Planilha1").Activate

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

Selecionar uma Planilha

Sheets("Planilha1").Select

Selecionar Várias Planilhas

Use uma array para selecionar várias planilhas de uma vez:

Worksheets(Array("Planilha2", "Planilha3")).Select

Variável de Planilha

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

Para declarar uma variável de planilha:

Dim ws as worksheet

Atribuir uma planilha a uma variável:

Set ws = Sheets("Planilha1")

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

ws.Activate

Percorrer Todas as Planilhas da Pasta de Trabalho

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

Dim ws as Worksheet

For Each ws in Worksheets
  MsgBox ws.name
Next ws

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

Proteção da Planilha

Proteção da Pasta de Trabalho

menu proteger arquivo

A proteção da pasta de trabalho bloqueia a pasta de trabalho contra alterações estruturais, como adição, exclusão, movimentação ou ocultação de planilhas.

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

ActiveWorkbook.Protect Password:="Senha"

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

ActiveWorkbook.UnProtect Password:="Senha"

Observação: Você também pode proteger/desproteger sem uma senha, omitindo o argumento Password:

ActiveWorkbook.Protect

Proteção da Planilha

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

Proteger Planilha

Worksheets("Planilha1").Protect "Senha"

Desproteger Planilha

Worksheets("Planilha1").Unprotect "Senha"

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

Discutimos a proteção de planilhas em mais detalhes aqui.

Propriedade Visible da planilha

Talvez você já saiba que as planilhas podem ser ocultadas:

ocultar planilha menu

Na verdade, há três configurações de visibilidade da planilha: Visible, Hidden e VeryHidden (Visível, Oculta e Muito Oculta). As planilhas ocultas podem ser reexibidas por qualquer usuário comum do Excel, bastando clicar 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 no Editor VBA. Use os exemplos de código a seguir para ocultar/remover planilhas:

Reexibir Planilha

Worksheets("Planilha1").Visible = xlSheetVisible

Ocultar Planilha

Worksheets("Planilha1").visible = xlSheetHidden

Ocultar Planilha Modo VeryHidden

Worksheets("Planilha1").Visible = xlSheetVeryHidden

Eventos em Nível de Planilha

Os eventos são acionadores que podem causar a execução de “Procedimentos de eventos”. 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 eventos de planilha devem ser colocados em um módulo de planilha:

evento nivel planilha

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

lista eventos planilha

Evento de Ativação de Planilha

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

Private Sub Worksheet_Activate()
  Range("A1").Select
End Sub

Esse código selecionará a célula A1 (redefinindo a área de visualização para o canto superior esquerdo da planilha) sempre que a planilha for aberta.

Evento de Alteração de Planilha

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

Folha de consulta da planilha

Abaixo você encontrará uma folha de dicas com exemplos de códigos comuns para trabalhar com planilhas no VBA

VBA Worksheets Cheatsheet

VBA worksheets Cheatsheet
DescriptionCode Example
Referencing and Activating Sheets
Tab NameSheets("Input").Activate
VBA Code NameSheet1.Activate
Index PositionSheets(1).Activate
Select Sheet
Select SheetSheets("Input").Select
Set to VariableDim ws as Worksheet
Set ws = ActiveSheet
Name / RenameActiveSheet.Name = "NewName"
Next SheetActiveSheet.Next.Activate
Loop Through all SheetsDim ws as Worksheet

For each ws in Worksheets
Msgbox ws.name
Next ws
Loop Through Selected SheetsDim ws As Worksheet

For Each ws In ActiveWindow.SelectedSheets
MsgBox ws.Name
Next ws
Get ActiveSheetMsgBox ActiveSheet.Name
Add SheetSheets.Add
Add Sheet and NameSheets.Add.Name = "NewSheet"
Add Sheet With Name From CellSheets.Add.Name = range("a3").value
Add Sheet After AnotherSheets.Add After:=Sheets("Input")
Add Sheet After and NameSheets.Add(After:=Sheets("Input")).Name = "NewSheet"
Add Sheet Before and NameSheets.Add(Before:=Sheets("Input")).Name = "NewSheet"
Add Sheet to End of WorkbookSheets.Add After:=Sheets(Sheets.Count)
Add Sheet to Beginning of WorkbookSheets.Add(Before:=Sheets(1)).Name = "FirstSheet"
Add Sheet to VariableDim ws As Worksheet
Set ws = Sheets.Add
Copy Worksheets
Move Sheet to End of WorkbookSheets("Sheet1").Move After:=Sheets(Sheets.Count)
To New WorkbookSheets("Sheet1").Copy
Selected Sheets To New WorkbookActiveWindow.SelectedSheets.Copy
Before Another SheetSheets("Sheet1").Copy Before:=Sheets("Sheet2")
Before First SheetSheets("Sheet1").Copy Before:=Sheets(1)
After Last SheetSheets("Sheet1").Copy After:=Sheets(Sheets.Count)
Copy and NameSheets("Sheet1").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "LastSheet"
Copy and Name From Cell ValueSheets("Sheet1").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Range("A1").Value
To Another WorkbookSheets("Sheet1").Copy Before:=Workbooks("Example.xlsm").Sheets(1)
Hide / Unhide Sheets
Hide SheetSheets("Sheet1").visible = False
or
Sheets("Sheet1").visible = xlSheetHidden
Unhide SheetSheets("Sheet1").Visible = True
or
Sheets("Sheet1").Visible = xlSheetVisible
Very Hide SheetSheets(“Sheet1”).Visible = xlSheetVeryHidden
Delete or Clear Sheets
Delete SheetSheets("Sheet1").Delete
Delete Sheet (Error Handling)On Error Resume Next
Sheets("Sheet1").Delete
On Error GoTo 0
Delete Sheet (No Prompt)Application.DisplayAlerts = False
Sheets("Sheet1").Delete
Application.DisplayAlerts = True
Clear SheetSheets("Sheet1").Cells.Clear
Clear Sheet Contents OnlySheets("Sheet1").Cells.ClearContents
Clear Sheet UsedRangeSheets("Sheet1").UsedRange.Clear
Protect or Unprotect Sheets
Unprotect (No Password)Sheets("Sheet1").Unprotect
Unprotect (Password)Sheets("Sheet1").Unprotect "Password"
Protect (No Password)Sheets("Sheet1").Protect
Protect (Password)Sheets("Sheet1").Protect "Password"
Protect but Allow VBA AccessSheets("Sheet1").Protect UserInterfaceOnly:=True
Unprotect All SheetsDim ws As Worksheet

For Each ws In Worksheets
ws.Unprotect "password"
Next ws
vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA