VBA Visual Basic for Applications
VBA para
EXCEL
Profª Kátia Rodrigues
Copyright
Direitos autorais © Kátia R S Rodrigues
Todos os direitos reservados. Esta publicação é protegida por direitos
autorais. Nenhuma parte desta publicação pode ser reproduzida,
armazenada em um sistema de recuperação ou transmitida de qualquer
forma ou por qualquer meio, exceto conforme permitido pelo titular dos
direitos autorais.
VBE
Visual Basic
Editor
VB EDITOR (VBE)
O ambiente de códigos
O ambiente de desenvolvimento da linguagem VBA chama-se Visual
Basic Editor (VBE) que está dentro do próprio Excel. Sendo que:
✓ Permite estender os recursos e a versatilidade das macros;
✓ Possibilita trabalhar com formulários e objetos, através destes
formulários e objetos criarmos códigos de programação para facilitar
a criação de soluções de uma maneira mais significativa;
✓ Possibilita criar funções personalizadas para executar cálculos em vez
de ações.
Como acessar o Visual Basic Editor?
✓ Clique na guia Desenvolvedor;
✓ Clique em Visual Basic;
✓ Ou pelo atalho ALT+F11
Ambiente VBE
Interface
O Editor do Visual Basic exibe informações diferentes em várias janelas.
Barra de
ferramentas
Editor de
PROJETO -
Código
VBAProject
[F7]
[CTRL+R]
Janela de Verificação
imediata
PROPRIEDADES [CTRL+G]
[F4]
Barra de ferramentas
Padrão
Também é possível abrir as janelas do Projeto e a janela de Propriedades
usando o ícone da Barra de ferramentas padrão
Ajuda da Microsoft
Projeto - VBAProject
Project Explorer
O Project Explorer exibe uma lista hierárquica de todos os Suplementos,
Projetos VBA e Macros contidos na pasta de trabalho na qual está
trabalhando e de todas as outras pastas de trabalho que estiverem
abertas, portanto, para visualizar todo o projeto é necessário clicar em
[+] ou [-] na estrutura de árvore para expandir ou recolher as pastas.
Um projeto VBA pode conter os seguintes elementos:
✓ Objetos (Pasta de trabalho e Planilhas);
✓ Formulários de usuário, que fornecem uma superfície visível na qual
é inserido controles gráficos, como botões, imagens e áreas de texto.
✓ Módulos, que contêm o código de macro associado a uma planilha;
✓ Módulos de classe, que são objetos criados para sua pasta de
trabalho.
Módulos
O que é um módulo?
Local onde o Excel
armazena os códigos.
Pasta de Módulos
• Se já existe uma macro no arquivo do Excel podemos ver o código
no VBE :
✓ Duplo clique em Módulos;
✓ Duplo clique em Módulo 1
Pasta de Módulos
Módulos
Adicionando um novo módulo
✓ Selecione o nome do projeto
na janela de Projeto;
✓ Escolha Inserir > Módulo
Pasta de Módulos
Removendo um módulo
✓ Selecione o nome do módulo na
janela Projeto;
✓ Escolha Arquivo > Remover xxx,
onde xxx é o nome do módulo
Pasta de Módulos
Procedimentos
Tipo e Escopo
Procedimento: Contém uma série de instruções e métodos que
executam uma operação ou calculam um valor. Podem ser do tipo:
✓ Sub : executa uma série de comandos que
executam uma ação no Excel;
✓ Função (Function): tem como objetivo executar
cálculos que retornam um ou mais valores;
✓ Um procedimento de evento: executa comandos
quando um objeto é acionado, seja pela ação do
usuário (como clicar com o mouse) ou por meio de
um código do próprio programa.
Qualquer código do Visual Basic para ser executado deve ser escrito
dentro de uma rotina (pública ou particular).
Escopo:
✓ Público (Public) a rotina pode ser chamada dentro de qualquer outra
rotina de qualquer parte do projeto, como módulos, formulários,
objetos. Também ficará disponível em outro projeto aberto, desde
que você adicione a referência a esse projeto.
✓ Particular (Private) a rotina só pode ser executada no módulo onde
foi escrita e não aparecerá quando tentamos solicitar a execução de
macro (ALT+F8), ou seja, não estará disponível na interface direta
com o usuário.
Sub-Rotinas
Público e Particular
O procedimento Sub realiza ações de acordo com as instruções do
código.
✓ Public Sub: Cria uma sub-rotina pública que pode ser acessado por
qualquer procedimento de qualquer módulo, e é exibida no
Exibidor de Macros (Alt+F8). Sub-rotinas são públicas
por padrão, portanto
Public Sub Nome_da_Macro () não é obrigatório
corpo_da_macro escrever a palavra-
End Sub chave Public
✓ Private Sub: Cria uma sub-rotina privada que pode ser acessado
apenas por procedimentos do mesmo módulo, e não é exibida no
Exibidor de Macros (Alt+F8).
Private Sub Nome_da_Macro> ()
corpo_da_macro
End Sub
Funções
Pública ou Particular
Procedimento Function possui dois usos principais:
1. Para calcular um valor dentro de uma célula em uma planilha
(conhecido como Funções Definidas pelo Usuário)
2. Para calcular um valor dentro do código VBA
✓ Public Function: A função está acessível a todos os outros
procedimentos em todos os módulos, poderá ser usada na planilha e
ficará visível nas funções definidas pelo usuário.
Public Function Nome_da_Função (argumento1, argumento2,...)
Nome_da_Função = Cálculo a ser efetuado
End Function
Sub-rotinas e funções
são públicas por
padrão, portanto não é
obrigatório escrever a
palavra-chave Public
✓ Private Function: A função é acessível somente para outros
procedimentos no módulo em que foi declarado.
Private Function Nome_da_Função (argumento1, argumento2,...)
Nome_da_Função = Cálculo a ser efetuado
End Function
Janela de Propriedades (F4)
Descrição
A Janela de Propriedades lista as propriedades dos objetos
selecionados e suas configurações atuais.
Guia alfabética :
lista alfabeticamente todas as propriedades do objeto selecionado
que podem ser alteradas em tempo de design, bem como suas
configurações atuais. Você pode alterar a configuração da
propriedade selecionando o nome da propriedade e digitando ou
selecionando a nova configuração.
Guia categorizada:
lista todas as propriedades do objeto selecionado por categoria.
Você pode recolher a lista para ver as categorias ou pode expandir
uma categoria para ver as propriedades. Ao expandir ou recolher a
lista, você verá um ícone de adição [+] ou um ícone de subtração [-]
à esquerda do nome da categoria.
Editor de Código - Janela de Opções
Trocar as configurações da aparência do Editor
de código do Visual Basic para fundo preto:
Indentação
Recuar linhas
Indentação é um efeito tipográfico de recuar/afastar um texto de sua
margem para ressaltar a estrutura das linhas de código de um
programa. Seu efeito direto é melhorar a compreensão do código.
O recuo é apenas para seu benefício, e é opcional, pois o código será
executado com ou sem ele.
Você pode usar a tecla Tab para recuar a linha. Depois de digitar uma
linha recuada, o VBE assume que sua próxima linha será igualmente
recuada. Para voltar para a esquerda, pressione as teclas Shift+Tab.
Por padrão, a indentação do VBE é de 4 espaços. No entanto, ás vezes
utilizo 2 espaços.
Você pode alterar essa configuração clicando no menu Ferramentas>
controle Opções >clique na guia Editor >> caixa de texto Largura da
tabulação:
Existem alguns serviços online para identar o código:
https://www.automateexcel.com/vba-code-indenter/#
http://www.vbindent.com/?indent
Executar Códigos
Localizar erros - Bugs
Toda rotina em VBA (incluindo funções) segue uma estrutura sequencial:
os comandos são executados da primeira até a última linha. O comando
de uma linha não começa até que o comando da linha anterior tenha
sido processado completamente. Portanto, uma rotina é um algoritmo
descrito entre as instruções Sub e End Sub, uma série de ações ou
comandos que o interpretador do VBA segue e a depuração é um
processo de localizar e corrigir bugs.
Desta forma a execução da rotina é passo-a-passo, pois a cada vez que
fazemos a DEPURAÇÃO TOTAL (F8) executa-se apenas uma linha de
comando. A linha de comando que executada ficará destacada em
amarelo e uma seta à esquerda da janela de módulo indica a linha.
Redefinir
Executar Interromper
Macro (F5)
Janela de inspeção imediata CTRL+G
Depurar código
A janela Verificação imediata é usada para testar e depurar o código.
Nesta janela, você pode inserir uma linha de código na janela, executar
e visualizar imediatamente o seu resultado. Além disso, na janela de
Verificação Imediata também é possível interromper um código em
execução, usar a janela para executar códigos adicionais e testar estas
alterações.
Digitamos um ponto de interrogação (?) em seguida o comando que
quer executar e teclamos ENTER para executar.
Exemplos:
?ThisWorkbook.FullName
?ActiveSheet.Name
?ActiveCell.Value
A janela só executa uma linha por vez. Caso queira executar vários
comandos em uma linha, use dois pontos como separador.
Depurar Códigos
Método Debug.Print
Esta função imprime valores diretamente na janela imediata [CTRL+G] e
é usada quando não desejamos exibir valores ou resultados em uma
célula da própria pasta de trabalho ou em uma caixa de mensagem.
Quando executamos o código podemos ver que a saída é mostrada na
janela imediata.
Depurar Códigos
Localizar erros - Bugs
Toda rotina em VBA (incluindo funções) segue uma estrutura sequencial:
os comandos são executados da primeira até a última linha. O comando
de uma linha não começa até que o comando da linha anterior tenha
sido processado completamente. Portanto, uma rotina é um algoritmo
descrito entre as instruções Sub - End Sub ou Function – End Function,
que o interpretador do VBA segue e a depuração é um processo de
localizar e corrigir bugs.
Desta forma a execução da rotina é passo-a-passo, a cada vez que
fazemos a DEPURAÇÃO TOTAL (F8) executa-se apenas uma linha de
comando. A linha de comando que executada ficará destacada em
amarelo e uma seta à esquerda da janela de módulo indica a linha.
Depurar Códigos
Pontos de interrupção
Os pontos de interrupção especificam linhas de código nas quais a
execução de sua macro deve pausar quando você depurar o VBA.
Para adicionar / remover um ponto de interrupção, simplesmente
clique com o botão esquerdo do mouse na barra cinza ao lado do seu
código. Um ponto vermelho deve aparecer indicando que você
especificou um novo ponto de interrupção.
Clique no ponto novamente para remover o ponto de interrupção.
Pesquisar Objetos
Propriedades
VBE possui um Pesquisador de Objeto. Para acessar o Pesquisador de
Objeto, pressione [F2] quando o VBE estiver ativo.
Recurso Autolist Membros ajuda a identificar propriedades e
métodos para um objeto.
Selecione o item
que precisa e
pressione a tecla
TAB
VBA
Visual Basic
for
Applications
O Visual Basic for Applications (VBA)
Linguagem de Programação
Dicas e truques de programação
Simplificar um problema
Faça um roteiro com o passo a passo das ações que deseja automatizar
A programação pode ficar complexa em um piscar de olhos. É fundamental,
dividir o problema nas menores unidades lógicas possíveis e, em seguida,
gravar e testar cada parte isoladamente.
Bugs e depuração
Errar (bug) é normal, faz parte do processo. Não fique frustrado com erros,
pesquise o erro e resolva.
O Editor do Visual Basic emite um aviso quando seu código falhar. Existem dois
tipos principais de erros de programação: erros de sintaxe, que violam as
regras gramaticais da linguagem de programação, e erros de tempo de
execução, que parecem sintaticamente corretos.
Aproveitando os materiais de referência
Abrir a ajuda no site da MS
Depois de abrir o VBE [Alt+F11] você poderá clicar no ponto de interrogação na
faixa de opções ou pressionar F1, e irá abrir o site da MS para a Ajuda.
Se colocar o cursor na palavra do código e pressionar [F1], irá abrir a ajuda
mais exata.
Comece com exemplos, Internet
A comunidade do VBA é muito grande.
Uma pesquisa na Web quase sempre gera um exemplo de código VBA que faz
algo semelhante àquilo que você deseja fazer e tente adaptar à sua
necessidade.
Objetos
Componentes dos objetos
Um objeto refere-se às entidades que compõem uma pasta de trabalho
do Excel, como Planilhas, Linhas, Colunas, Intervalos de Células, Gráficos
e a própria Pasta de Trabalho Excel.
Componentes dos objetos:
Há três itens principais que um objeto pode ter:
✓ Eventos
✓ Métodos
✓ Propriedades
No Pesquisador de Objetos [F2] ou no Intellisense esses componentes
são identificados por diferentes ícones ao lado dos membros de um
objeto.
Coleções de objetos
O Excel VBA tem um tipo especial de objeto, chamado de Coleção. Uma
Coleção é usada para agrupar e gerenciar outros objetos do Excel. Por
exemplo, a coleção 'Linhas' é um objeto que contém todas as linhas de
uma planilha.
Métodos dos objetos
O que é um método VBA?
O método é o “algo” que é feito ao objeto . Em outras palavras: um
método informa ao Excel qual ação executar em relação a esse objeto. Por
exemplo, o objeto Workbook tem os métodos 'Ativar', 'Fechar', 'Salvar' e
muito mais.
Um Método de Objeto pode ser chamado referindo-se ao nome do objeto
seguido de ponto e, em seguida, o nome do método.
Como qualquer outro procedimento, os métodos podem ter argumentos
que são fornecidos quando o método é chamado. Por exemplo, o método
Salvar como da Pasta de Trabalho possui argumentos opcionais que são
usados para fornecer informações ao método, de que modo a Pasta de
Trabalho deve ser salva.
ActiveWorkbook.SaveAs 'MÉTODO 1
ActiveWorkbook.SaveAs, xlOpenXMLWorkbookMacroEnabled 'MÉTODO 2
ActiveWorkbook.SaveAs Filename:="nome", FileFormat:=xlCSV 'MÉTODO 3
expressão.SaveAs (Filename, FileFormat, password, WriteResPassword,
ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution,
AddToMru, textcodepage, TextVisualLayout, local)
Salvar como - formatos
Enumeração XlFileFormat
Name Valor Descrição Extensão
xlAddIn 18 Suplemento do MS Excel 97-2003 *.xla
xlAddIn8 18 Suplemento do MS Excel 97-2003 *.xla
xlCSV 6 CSV *.csv
xlCSVMSDOS 24 MSDOS CSV *.csv
xlCSVUTF8 62 UTF8 CSV *.csv
xlCSVWindows 23 Windows CSV *.csv
xlCurrentPlatformText -4158 Current Platform Text *.txt
xlDBF2 7 Formato Dbase 2 *.dbf
xlDBF3 8 Formato Dbase 3 *.dbf
xlDBF4 11 Formato dBASE 4 *.dbf
xlDIF 9 Formato de troca de dados *.dif
xlExcel12 50 Pasta de Trabalho Binária do Excel *.xlsb
xlExcel8 56 Pasta de trabalho do Excel 97-2003 *.xls
xlOpenDocumentSpre 60 Planilha OpenDocument *.ods
adsheet
xlOpenXMLAddIn 55 Suplemento XML Aberto *.xlam
xlOpenXMLTemplate 54 Modelo XML Aberto *.xltx
xlOpenXMLTemplateM 53 Macro de Modelo XML Aberto *.xltm
acroEnabled Habilitada
xlOpenXMLWorkbook 51 Pasta de Trabalho XML Aberta *.xlsx
xlOpenXMLWorkbook 52 Macro de Pasta de Trabalho XML *.xlsm
MacroEnabled Aberta Habilitada
xlTemplate 17 Formato de modelo do Excel *.xlt
xlTextWindows 20 Texto do Windows *.txt
xlUnicodeText 42 Texto Unicode Sem extensão de
arquivo; *. txt
xlWebArchive 45 Arquivo da Web *.mht; *.mhtml
xlWorkbookDefault 51 Pasta de trabalho padrão *.xlsx
xlWorkbookNormal -4143 Pasta de trabalho normal *.xls
xlXMLSpreadsheet 46 Planilha XML *.xml
Exemplo de Métodos
O que é um método VBA?
O método é o “algo” que é feito ao objeto . Em outras palavras: um
método informa ao Excel qual ação executar em relação a esse objeto.
Copiar, colar e selecionar são apenas alguns exemplos de métodos VBA
que podem ser executados.
E se tentarmos atribuir um
valor que não seja um
número inteiro, iremos
receber um erro.
O exemplo a seguir ativa a Planilha3 na pasta de trabalho Minha
formatação.xlsm (a pasta de trabalho já deverá estar aberta no
Microsoft Excel).
Workbooks("Minha formatação.xlsm").Worksheets("Planilha3").Activate
Propriedades dos objetos
Como procurar e encontrar as propriedades do
objeto de que você precisa.
As propriedades são os atributos, características ou aspectos de seu
comportamento e cada objeto tem seu próprio conjunto de propriedades.
Portanto, as propriedades determinam coisas como:
✓ Como o objeto se parece;
✓ Como o objeto se comporta;
✓ Se você pode ou não ver o objeto.
Para conhecer as propriedades dos objetos, no Pesquisador de objetos [F2]
escolha Excel e depois basta procurar o que você deseja e clicar nele
Eventos
Um evento é uma ação reconhecida por um objeto, como clicar com o
mouse ou pressionar uma tecla e, para a qual é possível escrever um
código. Eventos informam ao aplicativo que algo importante ocorreu em
resultado de uma ação do usuário, do sistema ou do próprio código.
Nome dos Eventos: LensGalleryRenderComplete
Activate PivotTableAfterValueChange
BeforeDelete PivotTableBeforeAllocateChanges
BeforeDoubleClick PivotTableBeforeCommitChanges
BeforeRightClick PivotTableBeforeDiscardChanges
Calculate PivotTableChangeSync
Change PivotTableUpdate
Deactivate SelectionChange
FollowHyperlink TableUpdate
Por exemplo, pode-se desencadear um evento Worksheet.Change
quando o usuário clicar em nas células da planilha.
Tipos de Eventos
Eventos da pasta de trabalho - esses eventos são disparados com base no
que o usuário faz com a própria pasta de trabalho. Eles incluem ações do
usuário, como abrir a pasta de trabalho, fechar a pasta de trabalho, salvá-
la, adicionar ou excluir planilha
Eventos de planilha - esses eventos são disparados por um usuário
executando ações em uma planilha específica. Cada planilha dentro da
pasta de trabalho tem um módulo de código individual, que contém vários
eventos especificamente para essa planilha (não para todas as planilhas).
Isso inclui ações do usuário, como alterar o conteúdo de uma célula, clicar
duas vezes em uma célula ou clicar com o botão direito em uma célula.
Eventos de controle Active X - os controles Active X podem ser
adicionados a uma planilha usando o ícone 'Inserir' na guia
'Desenvolvedor' na faixa de opções do Excel. Frequentemente, são
controles de botão para permitir que o usuário execute várias ações.
Eventos de formulário de usuário - você pode inserir e projetar um
formulário com aparência profissional para usar como um pop-up. Todos
os controles que você coloca em seu formulário são controles Active X e
têm os mesmos eventos que os controles Active X que você pode colocar
em uma planilha
Eventos de gráfico - esses eventos estão relacionados apenas a uma folha
de gráfico e não a um gráfico que aparece como parte de uma planilha.
Esses eventos incluem redimensionar o gráfico ou selecionar o gráfico.
Eventos de aplicativo - usam o objeto Aplicativo no VBA. Os exemplos
permitem que o código seja disparado quando uma determinada tecla é
pressionada ou quando um determinado tempo é atingido. Você pode
programar uma situação em que a pasta de trabalho fica aberta 24 horas
por dia, 7 dias por semana e importa dados de uma fonte externa durante
a noite em um horário pré-determinado.
Referências no VBA
Objetos do Excel
Saber como se referir a objetos ao escrever o código VBA é essencial.
Veja um pequeno exemplo da hierarquia dos objetos:
Application
AddIns Windows Workbooks
Charts Names VBProjets Windows Worksheets
ChartObjects PivotTables Range Name Hiperlink
Por exemplo:
Application.Workbooks("Cadastro.xlsm").Worksheets("Planilha1").Range("A1").Value = "100“
*Usando a referência totalmente qualificada no código VBA
Workbook
Worksheet Range
Application (Pasta de
(Planilha) (Célula)
Trabalho)
RESUMO
Tipos de Objetos
Tipo de objeto Descrição
Application O aplicativo Excel atual.
Workbooks - Coleção O objeto Workbooks é uma coleção de todas
as pastas de trabalho abertas do Excel.
Uma pasta de trabalho individual pode ser
extraída do objeto Workbooks usando um
número ou nome de índice ou nome
individual da Pasta de Trabalho (ou seja, Pasta
de trabalho(1) ou Pasta de trabalho ("Nome
do arquivo")).
Workbook Um objeto workbook pode ser acessado a
partir da Coleção de pastas usando um
número de índice da Pasta de Trabalho ou um
nome workbook (por exemplo, Livros de
Trabalho(1) ou Livros de Trabalho ("Book1") ).
Você também pode usar o 'ActiveWorkbook'
para acessar a atual pasta de Trabalho ativa.
A partir do objeto Workbook, você pode
acessar o objeto Sheets, que é uma coleção de
todas as Planilhas (Worksheets ou Charts
Sheets )
RESUMO
Tipos de Objetos
Tipo de objeto Descrição
Worksheets O objeto Planilhas é uma coleção de todas as
Planilhas em uma Planilha (ou seja, todas as
Planilhas, exceto os Gráficos). Uma planilha
individual pode ser extraída do objeto
Planilhas usando um número ou nome do
índice: Planilhas(1) ou nome da Planilha
individual: Planilhas ("NomedaGuia").
Worksheet Um objeto de planilha pode ser acessado a
partir da Planilha ou do objeto Planilhas
usando um número de índice de planilha ou
planilha ou um nome daPlanilha (por exemplo,
Folhas(1), Planilhas(1), Planilhas ("Folha1") ou
Planilhas (“Dados")). Você também pode usar
o 'ActiveSheet' para acessar a folha ativa atual.
A partir do objeto Planilha, você pode acessar
os objetos Linhas e Colunas, que são coleções
de objetos de intervalo relacionados às Linhas
e Colunas da
Planilha. Você também pode acessar uma
célula individual ou qualquer faixa de células
contíguas na Planilha.
RESUMO
Tipos de Objetos
Tipo de objeto Descrição
Rows O objeto Rows é uma coleção de todas as linhas de uma
planilha. Um objeto Range composto por uma linha de
planilha individual pode ser acessado usando um
número de índice (ou seja, Linhas(1))
Columns O objeto Colunas é uma coleção de todas as Colunas de
uma Planilha. Um objeto Range composto por uma
coluna de planilha individual pode ser acessado usando
um número de índice (ou seja, Colunas(1))
Range O objeto Range representa qualquer número de células
contíguas em uma planilha. Isso pode ser apenas uma
célula ou pode ser todas as células da Planilha.
Uma faixa composta por apenas uma célula pode ser
devolvida de uma planilha, usando a propriedade Cells
(ou seja, Planilha.Células(1,1)).
Alternativamente, um intervalo pode ser referenciado
especificando uma faixa celular ou uma célula inicial e
final (por exemplo, Planilha.Intervalo("A1:B10") OU
Planilha.Intervalo ("A1", "B10") OU Planilha.Alcance
(Células(1,1), Células(10,2)).
Observe que se a segunda referência celular for omitida
da Faixa (por exemplo, Planilha.Intervalo("A1") OU
Planilha.Intervalo (Células(1,1)), isso retornará um
intervalo que consiste em apenas uma
célula.
Referências no VBA
O objeto Application
O objeto "Application" refere-se a todo o aplicativo Excel.
O objeto Workbook e a coleção Workbooks:
O objeto Workbook representa uma pasta de trabalho do Excel.
O objeto Workbook é um membro da coleção Workbooks.
A coleção Workbooks contém todos os objetos Workbook atualmente abertos no
Excel.
Exemplo Workbook/Workbooks:
Para consultar uma pasta de trabalho use o nome específico do arquivo seguido
pela extensão: Workbooks("Teste.xls")
O exemplo a seguir ativa a Planilha1 - Worksheets("Planilha1"), sendo que esta
planilha está na pasta de trabalho Teste.xls
Workbooks("Teste.xls").Worksheets("Planilha1").Activate
Para Salvar a pasta de trabalho atual:
ThisWorkbook.Save
Para consultar a pasta de trabalho ativa:
ActiveWorkbook
*Ao criar macros, o Excel assume que você está trabalhando com o objeto
Aplicativo. Portanto, em algumas situações podemos omitir o objeto Application.
Referências no VBA
O objeto Worksheet e a coleção Worksheets:
O objeto Worksheet representa uma planilha.
O objeto Worksheet é um membro da coleção Worksheets.
A coleção Worksheets contém todos os objetos Worksheet em uma pasta de
trabalho.
A coleção Sheets refere-se a todas as planilhas, bem como planilhas de
gráficos em uma pasta de trabalho.
Diferença entre Worksheets e Sheets:
Em uma pasta de trabalho (Workbook) podemos ter:
Planilhas (Worksheets) e Planilhas de gráficos (Chart Sheets)
No exemplo abaixo, a coleção Sheets contém – 3 planilhas + 1 gráfico.
Portanto, se você tiver que consultar apenas planilhas, use a coleção
‘Worksheets’ e, se precisar consultar todas as planilhas (incluindo planilhas de
gráficos), utilize a coleção ‘Sheets’.
.Activate: Ativar pode ser usado para ativar
Exemplo Worksheet/Worksheets: um objeto dentro da seleção, ou seja, faz a
planilha especificada a planilha ativa e só
Worksheets("Planilha2").Activate pode ser aplicada a uma única planilha.
Sheets("Gráfico1").Activate
.Select: Selecionar pode ser usado para
PlanilhaA.Select selecionar vários objetos (planilhas, gráficos,
formas, etc.) ao mesmo tempo, por exemplo
(quando selecionamos as planilhas com a
tecla CRTL pressionada)
Referências no VBA
O objeto Range:
O objeto Range é a representação de uma célula, uma linha,
uma coluna, uma seleção de células e é o objeto mais
importante do Excel VBA.
Fazer referência a células e intervalos usando a notação A1
Referência Significado
Range("A1") Célula A1
Range("A1:B5") Células de A1 a B5
Range("C5:D9,G9:H16") Uma seleção de várias áreas
Range("A:A") Coluna A
Range("1:1") Linha 1
Range("A:C") Colunas de A a C
Range("1:5") Linhas de 1 a 5
Range("1:1,3:3,8:8") Linhas 1, 3 e 8
Range("A:A,C:C,F:F") Colunas A, C e F
É importante lembrar que
esse argumento dentro do
objeto Range deve ser
colocado entre aspas
duplas.
Referências no VBA
O objeto Cells:
Fazer referência a células usando números de índice
Usar Cells para referir-se a uma única célula indicando o número de índice
de linhas e colunas.
Portanto, utilizar as coordenadas (linha, coluna) e não a referência da célula
como na estrutura Range.
A estrutura será: Cells([linha],[coluna])
Exemplo:
Cells(11, 4).Select
Estamos selecionando uma célula que está na linha 11 e na coluna 4, ou
seja, estaríamos na célula D11.
Usar Range com a propriedade Cells para referir-se a um intervalo
indicando o número de índice de linhas e colunas.
A estrutura será: Range(Cells(linha,Coluna )
Exemplo de intervalo:
Range([celula de início],[célula de fim])
Range("A1:B2") é equivalente Range(Cells(1, 1), Cells(2, 2))
Range("B2:C3").Cells(1, 2).Value
Referência à célula na 1ª linha e na 2ª coluna dentro do intervalo B2:C3
(célula C2)
Última Linha ou Coluna com Dados
End
É importante sabermos gerar um código que identifique o endereço da última
linha ou coluna com dados de uma planilha.
A propriedade End, utilizada em conjunto com o objeto Range, retornará a
última célula com conteúdo para uma dada direção, equivale a pressionar a
tecla Ctrl + Seta para esquerda ou Seta para cima ou Seta para baixo ou Seta
para direita.
Ao utilizar End é necessário definir seu argumento, que é a direção:
xlUp, xlToRight, xlDown, xlToLeft.
'Determina a primeira linha com dados da primeira coluna
de cima para baixo
prilinha = Range("A1").End(xlDown).Row
MsgBox prilinha
'Determina a última linha com dados da primeira coluna de
baixo para cima
ultlinha = Range("A1048576").End(xlUp).Row
MsgBox ultlinha
'Determina a última coluna com dados da primeira linha da
esquerda para direita
pricol = Range("A1").End(xlToRight).Column
MsgBox pricol
'Determina a última coluna com dados da primeira linha
direita para esquerda
ultcol = Range("XFD1").End(xlToLeft).Column
MsgBox ultcol
Última Linha ou Coluna com Dados
Count
A propriedade .Count, quando utilizada com objeto Range, retorna o
número de células de um determinado intervalo. (independente se
estiverem preenchidas ou não).
MsgBox Range("A1:B7").Count 'Retornará 14
MsgBox Range("A1:B7").Rows.Count 'Retornará 7
MsgBox Range("A1:B7").Columns.Count 'Retornará 2
Caso queira saber o número de colunas ou o número de linhas de um
determinado intervalo, é possível utilizar a propriedade Columns (para
colunas) ou a propriedade Rows (para linhas) em conjunto com a
propriedade Count.
ultlinha = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox ultlinha
ultcol = Cells(1, Columns.Count).End(xlToLeft).Column
MsgBox ultcol