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.


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
- 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. - Escreva uma segunda linha que exiba quantas linhas existem na tabela Employees usando
CurrentRegion.Rows.Count.
Referencie como ThisWorkbook.Worksheets("Employees").Range("D4").Value — linha 4 corresponde a Olivia Brown, coluna D é o Cargo.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
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.


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
- 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. - Escreva uma segunda linha que exiba quantas linhas existem na tabela Employees usando
CurrentRegion.Rows.Count.
Referencie como ThisWorkbook.Worksheets("Employees").Range("D4").Value — linha 4 corresponde a Olivia Brown, coluna D é o Cargo.
Obrigado pelo seu feedback!