Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Compreendendo o Modelo de Objeto do Excel | Introdução ao VBA e ao Modelo de Objetos do Excel
VBA do Excel para Automação Empresarial

Compreendendo o Modelo de Objeto do Excel

Deslize para mostrar o menu

Cada linha de VBA que você escrever no Excel é uma sentença sobre objetos: algo existe (um Application, um Workbook, uma Worksheet, um Range), e você lê uma de suas propriedades ou solicita que execute um de seus métodos. Quando essa hierarquia faz sentido, o restante da linguagem é basicamente vocabulário.

Leitura da Hierarquia

  • Application — toda a instância em execução do Excel; o topo de toda hierarquia;
  • Workbooks — a coleção de todos os arquivos abertos; um único é um Workbook, por exemplo, Section_1_VBA_Intro.xlsm;
  • Worksheets — a coleção de abas dentro de um workbook; uma única é uma Worksheet, por exemplo, "Employees";
  • Range — uma célula, um bloco de células, uma linha inteira ou uma coluna inteira;
  • Cells / Value — os dados reais contidos em um Range.

Raramente é necessário digitar toda a cadeia desde Application — o VBA assume que você se refere ao workbook e à planilha ativos, a menos que especifique o contrário — mas nomear objetos explicitamente é o que diferencia um código frágil de um código confiável. Compare estas duas formas de escrever a mesma instrução:

' Fragile — depends on whatever sheet happens to be active
Range("F2").Value = 65000
 
' Reliable — states exactly which workbook and sheet, no matter what's on screen
ThisWorkbook.Worksheets("Employees").Range("F2").Value = 65000

A segunda versão continuará funcionando mesmo que o usuário tenha três outras pastas de trabalho abertas e uma planilha diferente selecionada — um hábito que faz enorme diferença à medida que seus macros crescem além de algumas linhas. Você usará ThisWorkbook.Worksheets("SheetName") dessa forma constantemente pelo restante do curso.

Navegação entre Relacionamentos de Objetos na Janela Imediata

A Janela Imediata (Exibir → Janela Imediata ou Ctrl+G dentro do VBE; ^ ⌘ G no Mac) permite testar uma linha de código sem precisar colocá-la dentro de um Sub.

carousel-imgcarousel-img

Digite uma linha começando com um ponto de interrogação e pressione Enter para ver o resultado imediatamente. Experimente estes comandos em Section_1_VBA_Intro.xlsm:

?ThisWorkbook.Name
?ThisWorkbook.Worksheets("Employees").Range("B3").Value
?ThisWorkbook.Worksheets("Employees").Range("A1").CurrentRegion.Address
?ThisWorkbook.Worksheets.Count

A terceira linha apresenta CurrentRegion, uma propriedade que expande de uma única célula para todo o bloco contíguo de dados ao redor.

Tarefa

  1. Na Janela Imediata, escreva uma linha que exiba o Cargo de Olivia Brown (linha 4) sem clicar primeiro na célula — faça a referência diretamente pela hierarquia de objetos.
  2. Escreva uma segunda linha que exiba quantas linhas existem na tabela Employees usando CurrentRegion.Rows.Count.
Dica
expand arrow

Referencie como ThisWorkbook.Worksheets("Employees").Range("D4").Value — linha 4 corresponde a Olivia Brown, coluna D é o Cargo.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 4

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Compreendendo o Modelo de Objeto do Excel

Cada linha de VBA que você escrever no Excel é uma sentença sobre objetos: algo existe (um Application, um Workbook, uma Worksheet, um Range), e você lê uma de suas propriedades ou solicita que execute um de seus métodos. Quando essa hierarquia faz sentido, o restante da linguagem é basicamente vocabulário.

Leitura da Hierarquia

  • Application — toda a instância em execução do Excel; o topo de toda hierarquia;
  • Workbooks — a coleção de todos os arquivos abertos; um único é um Workbook, por exemplo, Section_1_VBA_Intro.xlsm;
  • Worksheets — a coleção de abas dentro de um workbook; uma única é uma Worksheet, por exemplo, "Employees";
  • Range — uma célula, um bloco de células, uma linha inteira ou uma coluna inteira;
  • Cells / Value — os dados reais contidos em um Range.

Raramente é necessário digitar toda a cadeia desde Application — o VBA assume que você se refere ao workbook e à planilha ativos, a menos que especifique o contrário — mas nomear objetos explicitamente é o que diferencia um código frágil de um código confiável. Compare estas duas formas de escrever a mesma instrução:

' Fragile — depends on whatever sheet happens to be active
Range("F2").Value = 65000
 
' Reliable — states exactly which workbook and sheet, no matter what's on screen
ThisWorkbook.Worksheets("Employees").Range("F2").Value = 65000

A segunda versão continuará funcionando mesmo que o usuário tenha três outras pastas de trabalho abertas e uma planilha diferente selecionada — um hábito que faz enorme diferença à medida que seus macros crescem além de algumas linhas. Você usará ThisWorkbook.Worksheets("SheetName") dessa forma constantemente pelo restante do curso.

Navegação entre Relacionamentos de Objetos na Janela Imediata

A Janela Imediata (Exibir → Janela Imediata ou Ctrl+G dentro do VBE; ^ ⌘ G no Mac) permite testar uma linha de código sem precisar colocá-la dentro de um Sub.

carousel-imgcarousel-img

Digite uma linha começando com um ponto de interrogação e pressione Enter para ver o resultado imediatamente. Experimente estes comandos em Section_1_VBA_Intro.xlsm:

?ThisWorkbook.Name
?ThisWorkbook.Worksheets("Employees").Range("B3").Value
?ThisWorkbook.Worksheets("Employees").Range("A1").CurrentRegion.Address
?ThisWorkbook.Worksheets.Count

A terceira linha apresenta CurrentRegion, uma propriedade que expande de uma única célula para todo o bloco contíguo de dados ao redor.

Tarefa

  1. Na Janela Imediata, escreva uma linha que exiba o Cargo de Olivia Brown (linha 4) sem clicar primeiro na célula — faça a referência diretamente pela hierarquia de objetos.
  2. Escreva uma segunda linha que exiba quantas linhas existem na tabela Employees usando CurrentRegion.Rows.Count.
Dica
expand arrow

Referencie como ThisWorkbook.Worksheets("Employees").Range("D4").Value — linha 4 corresponde a Olivia Brown, coluna D é o Cargo.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 4
some-alt