O que é VBA? (Um Guia para Iniciantes)
Afinal, o que é VBA? Qual a diferença entre Macro e VBA? Se você trabalha com o Excel ou com qualquer outro aplicativo do Microsoft Office, então é provável que já tenha se perguntado a respeito do VBA.
Neste guia, separamos as principais informações sobre VBA e Macros para que você possa se familiarizar com este assunto e expandir ainda mais o potencial das suas planilhas e arquivos do MS Office. Confira!
Navegue pelo tópico de sua preferência:
- O que é VBA?
- Qual a diferença entre Macro e VBA?
- Como criar uma Macro no Excel?
- Como acessar o editor VBA no Excel?
- Termos importantes do VBA
- Como o VBA é estruturado?
- Exemplos de códigos VBA
- Exemplo 1: Inserindo dados na célula ativa
- Exemplo 2: Exibindo caixa de mensagem
- Exemplo 3: Verificando se célula contém valor
- Exemplo 4: Destacando células vazias
- Exemplo 5: Destacando os 10 maiores valores de uma lista
- Exemplo 6: Destacando números negativos
- Exemplo 7: Inserindo números em série em células selecionadas
- Atalhos VBA no Excel
- Como aprender VBA?
- Recursos de aprendizagem
O que é VBA?
VBA é a abreviação de Visual Basic for Application. O VBA é uma linguagem de programação desenvolvida pela Microsoft, estando integrado aos principais aplicativos do Microsoft Office, como Excel, Access e Word.
Ao utilizar o VBA, os usuários conseguem obter acesso a funções além das disponíveis nos aplicativos MS Office. Os usuários também podem usar o VBA para personalizar aplicativos para atender às necessidades específicas de seus trabalhos, como criar funções definidas pelo usuário, automatizar processos e até mesmo acessar APIs do Windows.
Quem usa VBA?
Por ser utilizado para realizar diferentes tarefas, diferentes tipos de públicos podem utilizar essa linguagem de programação. A seguir, estão alguns dos diferentes públicos que costumam fazer uso do VBA em seus trabalhos e projetos.
Usuários Gerais
Usuários gerais do Microsoft Office como Excel, Word e Access podem utilizar o VBA em suas tarefas de rotina. Como o VBA é utilizado para automatizar tarefas, um usuário do Excel, por exemplo, pode automatizar alguns aspectos, como tarefas repetitivas, geração de relatórios, etc.
Um usuário pode criar um programa VBA (macro) dentro do Excel que gera, formata e imprime relatórios mensais com representação gráfica. Ao executar o código com um único clique, o Excel irá gerar automaticamente os relatórios com facilidade conforme a necessidade do usuário.
Profissionais de informática
O VBA também costuma ser utilizado por profissionais de informática que precisam executar tarefas mais complexas que, de outra forma, levariam mais tempo e mais recursos para serem concluídas.
Por exemplo, um profissional de informática pode usar o VBA para criar suplementos personalizados para Excel que fornecem funcionalidades adicionais ao aplicativo, introduzindo novas funções que não estão disponíveis no Excel.
Com o VBA, os profissionais de informática também são capazes de criar aplicativos dentro do MS Office e até mesmo mesclar as funções de dois ou mais programas diferentes como Excel e Access, por exemplo.
Usuários corporativos
Usuários corporativos também podem se beneficiar do uso do VBA. As empresas que fazem uso do MS Office podem usar o VBA para automatizar os principais procedimentos de negócios e processos internos. Tarefas como cálculos complexos, análise de dados, processamento de pedido de vendas, etc., podem ser automatizadas com o uso do VBA.
Qual a diferença entre Macro e VBA?
Qual a diferença entre macro e VBA? Muitos iniciantes que estão aprendendo VBA costumam ficar confusos com essa terminologia. Embora Macros e VBA sejam frequentemente usadas de forma intercambiável, eles apresentam pequenas diferenças. Veja as seguir as características de cada uma delas:
O que é uma Macro?
Uma Macro é um conjunto de instruções automatizadas (ou código) que podem ser executadas no Excel ou demais aplicativos do MS Office para realizar ações específicas. Em outras palavras, qualquer coisa que você possa fazer com a interface do Excel, por exemplo, que é convertida em um código (seja escrevendo o código manualmente ou usando o gravador de macro do Excel) pode ser chamada de macro.
Uma macro costuma ter as seguintes características:
- Refere-se a um conjunto de ações gravadas no Excel (ou outro aplicativo do MS Office) que podem ser reproduzidas.
- É normalmente criada usando o Gravador de Macros.
- Não requer conhecimento de programação, uma vez que o usuário executa ações e o Excel as registra.
- É armazenada na pasta de trabalho.
- Possui flexibilidade limitada, ou seja, executa as ações exatamente conforme registradas.
Como o VBA difere de uma macro?
Conforme mencionado anteriormente, o VBA é uma linguagem de programação usada em aplicativos do Microsoft Office para criar processos automatizados e funções personalizadas. O VBA possibilita expandir os recursos do MS Office além dos recursos integrados.
Para compreender a diferença entre macros e VBA, confira abaixo algumas características do VBA.
- É uma linguagem de programação usada para escrever scripts personalizados para Excel e outros aplicativos do MS Office.
- Fornece ampla funcionalidade, além da simples gravação de etapas (como Loops ou criação de funções personalizadas, ou interação com outros arquivos).
- Requer conhecimento de programação.
- Os scripts (ou códigos) são escritos no Editor VBA.
- Possibilita a automação de tarefas complexas, ações repetitivas e construção de funções e ferramentas/aplicativos personalizados.
Embora todo o código fornecido por uma Macro possa ser chamado de código VBA, o contrário não é o caso. Tanto as macros quanto o VBA são capazes de automatizar tarefas no MS Office, no entanto, o VBA fornece uma maneira muito mais poderosa e flexível de manipular e automatizar tarefas, enquanto as macros são mais simples e diretas para a automação de tarefas básicas.
Como criar uma Macro no Excel?
Sem dúvidas, o gravador de macros é uma excelente ferramenta de programação. Ao gravar uma macro, o código VBA é criado, armazenando cada ação realizada no Excel ou outro aplicativo MS Office em um módulo VBA. Deste modo, o usuário poderá acessá-lo para analisar, editar e até mesmo aprender com o código criado.
Embora o gravador de macros possa parecer uma ferramenta para iniciantes em VBA, até mesmo usuários experientes de Excel o usam, pois entendem a eficiência que esta ferramenta pode adicionar aos seus projetos.
Aqui estão os passos para criar macros utilizando o gravador de macros do Excel:
1. Clique na guia Desenvolvedor.
2. No grupo Código, clique no botão Gravar Macro.
3. Na caixa de diálogo Gravar Macro, insira um nome para sua macro. Neste exemplo, usaremos o nome InserirTexto. Existem algumas condições de nomenclatura que você precisa seguir ao nomear uma macro. Por exemplo, você não pode usar espaços no meio das palavras. Se preferir, use sublinhado para separar duas palavras como, por exemplo, Inserir_Texto.
4. (Etapa opcional) Caso prefira, você também pode atribuir um atalho de teclado para executar a macro. Nesse caso, usaremos o atalho CTRL + Shift + N. *Lembre-se de que o atalho atribuído aqui deixará de executar a sua função original, ou seja, em vez disso, toda vez que você o usar, ele executará a macro.
5. Na opção Armazenar macro em, verifique se Esta pasta de trabalho está selecionada. Esta etapa garante que a macro faça parte da pasta de trabalho. Ela estará lá quando você salvar a sua planilha e reabrir novamente, ou até mesmo se você a compartilhar com alguém.
6. (Etapa opcional) Digite uma descrição. Geralmente essa etapa não é necessária, mas se você é extremamente organizado, então pode querer adicionar uma breve descrição sobre o que é a Macro.
7. Clique em OK. Assim que você clicar em OK, o Excel começará a registrar suas ações. Você pode ver o botão Parar gravação na guia Desenvolvedor, que indica que a gravação da macro está em andamento.
8. Selecione a célula A1.
9. Digite o texto Excel (ou qualquer outro texto desejado).
10. Aperte a tecla Enter. Isso selecionará a célula A2.
11. Clique no botão Parar gravação na guia Desenvolvedor.
Pronto!! Você acabou de gravar sua primeira macro no Excel. Para saber como executar a macro após a gravação, confira o post: Como Gravar Macros no Excel – Um Guia Passo a Passo.
Como acessar o editor VBA no Excel?
Para criar ou visualizar o código VBA no Excel, comece abrindo o Excel e a pasta de trabalho de seu interesse. Navegue até a guia Desenvolvedor na faixa de Opções.
Caso essa guia não esteja visível, ative-a em Arquivo > Opções > Personalizar Faixa de Opções e marque a opção Desenvolvedor. Para mais detalhes, acesse o post Guia Desenvolvedor no Excel: Como Habilitar?.
Após acessar a guia Desenvolvedor, clique em Visual Basic para iniciar o Editor do VBA.
Dica: Você também pode acessar o ambiente VBA usando um atalho de teclado. Pressione ALT + F11 para abrir o Editor do Visual Basic no Excel.
Principais elementos do Editor VBA
1. Janela de Projeto: O Project Explorer ou Janela de Projeto é a visualização em árvore hierárquica onde é possível encontrar todas as pastas de trabalho abertas, bem como seus respectivos módulos, objetos e códigos VBA. Para acessar o Project Explorer, vá até a barra de ferramentas de acesso rápido, clique na aba Exibir e selecione Project Explorer.
2. Janela de Propriedades: A janela de Propriedades permite visualizar todas as propriedades e modificar as propriedades dos objetos selecionados em seu projeto VBA. Para exibir a janela de Propriedades, vá até a barra de menu, clique em Exibir e selecione Janela Propriedades.
3. Janela de Código: A janela de código é a área principal do editor VBA, sendo utilizada para criar, editar e visualizar o código. Ao selecionar um módulo ou objeto no Project Explorer, o código correspondente será exibido na Janela de Código.
Termos importantes do VBA
Abaixo estão alguns conceitos importantes com os quais você deve estar familiarizado para compreender totalmente este tutorial.
Módulo
No VBA, um módulo é um contêiner para armazenar o código. Um módulo VBA pode ter os seguintes tipos:
Módulo padrão: armazena os códigos de macros criadas pelo gravador de macros e códigos criados pelo usuário. Os códigos armazenados no módulo podem ser chamados por procedimentos em outros módulos (incluindo os outros quatro tipos de módulos apresentados abaixo) se forem declarados como públicos usando a palavra-chave Public.
Módulo de Pasta de Trabalho: por padrão, é denominado ThisWorkbook (EstaPastaDeTrabalho). Uma pasta de trabalho possui apenas um módulo de pasta de trabalho. Ele contém código VBA para eventos no nível da pasta de trabalho, mas também pode conter código VBA para outros procedimentos escritos pelo usuário.
Módulo de Planilha: contém código VBA para manipulação de eventos que respondem aos eventos associados a uma planilha específica em uma pasta de trabalho. Cada planilha (uma planilha ou uma planilha de gráfico) possui seu próprio módulo de planilha. Um módulo de planilha também pode conter código VBA para outros procedimentos.
Módulo de UserForm: um UserForm no VBA é uma caixa de diálogo personalizada para coletar informações dos usuários. Um módulo de UserForm contém um UserForm e manipuladores de eventos que respondem aos eventos relacionados ao UserForm. Ele também pode conter código VBA para outros procedimentos. Em uma pasta de trabalho, pode haver mais de um módulo UserForm, com um UserForm em cada um desses módulos.
Módulo de classe: é usado para criar sua própria nova classe – um modelo para criar uma instância de um objeto em tempo de execução. O código VBA que define propriedades, métodos e eventos para uma nova classe é armazenado neste módulo. Para mais detalhes sobre módulos de classe, recomendamos a leitura deste artigo.
Objetos
No VBA, a maioria do código é usado para manipular objetos. Objetos são itens como pastas de trabalho, planilhas, células, intervalos de células ou fontes de células.
Existem três itens principais que um objeto pode ter. São eles:
- Propriedades: define uma das características do objeto, como tamanho, cor ou localização na tela, ou um aspecto do comportamento dele.
- Métodos: São funções ou subs que executam alguma tarefa nos dados do objeto.
- Eventos: São funções ou subs que são acionadas quando um determinado evento ocorre.
Dica extra: Dentro do editor VBA, ao acessar a guia Exibir > Pesquisar de Objeto ou usar o atalho F2, você notará ícones diferentes ao lado dos membros de um objeto. Por exemplo, a imagem abaixo mostra os três primeiros membros do objeto Worksheet.
O que esses ícones significam é o seguinte:
Agora que você já sabe diferenciar Eventos, Métodos e Propriedades, vamos conferir cada um desses componentes com mais detalhes.
Propriedades de objeto
Propriedades são as características de um Objeto que podem ser medidas e quantificadas. Da mesma forma, os Objetos do Excel possuem diversas propriedades que podem ser medidas e quantificadas.
Por exemplo, um objeto Range tem propriedades como Value, Font.ColorIndex, Interior.ColorIndex, etc…
No exemplo abaixo, estamos utilizando a propriedade Value para atribuir o valor 10 à célula A10.
Range("A10").Value = 10
Métodos de objeto
Métodos são as ações que podem ser executadas por um Objeto ou em um Objeto. Por exemplo, se quisermos selecionar um intervalo, então será necessário utilizar o método Select. Por outro lado, se desejarmos copiar um intervalo de uma planilha para outra, então será necessário utilizar o método Copy para fazer isso.
O exemplo abaixo mostra o uso de métodos de objetos no VBA para copiar dados do intervalo A1 para F5.
Range("A1").Select Selection.Copy Range("F5").Select ActiveSheet.Paste
Eventos de objeto
Um evento é uma ação reconhecida por um objeto, como clicar com o mouse ou pressionar uma tecla para a qual é possível escrever um código para responder. Os eventos podem ocorrer como resultado de uma ação do usuário ou de um código do programa, ou podem ser disparados pelo sistema.
O evento NewSheet, por exemplo, é acionado quando se insere uma nova planilha na pasta de trabalho.
Digamos que você queira inserir a data e hora na célula A1 toda vez que inserir uma nova planilha. Você pode usar o código abaixo para fazer isso:
Private Sub Workbook_NewSheet(ByVal Sh As Object) On Error Resume Next Sh.Range("A1") = Format(Now, "dd-mmm-yyyy hh:mm:ss") End Sub
Dica de Leitura:
Procedimentos
O código VBA é organizado em procedimentos. Um procedimento contém instruções de como executar uma tarefa específica, sendo muito úteis para dividir tarefas complexas em unidades mais gerenciáveis.
Para criar um procedimento no VBA, siga as etapas:
1. Acesse o módulo no qual deseja criar o procedimento.
2. Crie um procedimento do tipo Sub, Function ou Property.
3. Digite Sub, Function ou Property. Pressione F1 para obter ajuda com sintaxe, se necessário.
4. Digite código para o procedimento.
5. Para finalizar o procedimento, insira End Sub, End Function ou End Property.
Declaração
No VBA, uma declaração é uma instrução que pode ser dividida em dois tipos diferentes.
Declaração de instrução: utilizada para nomear e definir procedimentos, variáveis, matrizes e constantes. Quando se declara um procedimento, variável ou constante, também é necessário definir seu escopo, dependendo de onde você coloca a declaração e quais palavras-chave você usa para declará-la. O exemplo a seguir contém duas declarações:
Sub CalularSoma() Dim célula as Range 'Restante do código End Sub
- A instrução Sub (com a instrução End Sub correspondente) declara um procedimento chamado CalularSoma. Deste modo, todas as instruções fechadas pelas instruções Sub e End Sub são executadas sempre que o procedimento CalularSoma é chamado ou executado.
- A instrução Dim declara a variável célula. O tipo de dados é um objeto, nesse caso, um objeto Range do Excel. Você pode declarar uma variável como qualquer objeto disponível no aplicativo que você está usando.
Declaração executável: inicia a ação. Pode executar um método ou função e pode fazer loop ou ramificar blocos de código. As instruções executáveis geralmente contêm operadores matemáticos ou condicionais.
O exemplo a seguir usa uma instrução For Each…Next para percorrer e destacar valores negativos em cada célula em um intervalo denominado MeuIntervalo na Planilha1 de uma pasta de trabalho ativa do Microsoft Excel. A variável Célula é uma célula na coleção de células contidas em MeuIntervalo.
Sub DestacarNegativos() Dim Célula As Range For Each Celula In Worksheets("Planilha1").Range("MeuIntervalo").Cells If Célula.Value < 0 Then Célula.Interior.Color = vbRed End If Next Célula End Sub
Variáveis
Variáveis são valores específicos armazenados na memória de um computador ou sistema de armazenamento. Posteriormente, é possível usar esse valor no código e executá-lo. O computador irá buscar esse valor do sistema e mostrá-lo na saída. Cada um dos tipos de variáveis do VBA deve receber um nome.
A tabela abaixo mostra todos os tipos de variáveis disponíveis que você pode usar no Excel VBA:
Dica: Para saber como declarar e utilizar variáveis no VBA, confira o post: Variáveis no VBA Excel – Guia Completo.
Operadores lógicos
Os operadores lógicos são usados para realizar operações lógicas e aritméticas em um conjunto de valores ou variáveis. O VBA permite o uso dos operadores lógicos AND, OR, NOT e XOR para comparar valores. Os operadores são considerados “Booleanos”, o que significa que retornam True ou False como resultado. No VBA, os operadores lógicos são usados para realizar comparações lógicas e combinar múltiplas condições.
Como o VBA é estruturado?
Conforme mencionado anteriormente, o VBA é uma linguagem de programação baseada em objetos. Isto significa que ele utiliza a ideia de encapsulamento e armazena o estado (dados) e a operação (funções) dentro de objetos. Os objetos são organizados em uma hierarquia que rege e cada elemento no Excel, por exemplo, é representado por um objeto no VBA. Abaixo estão os elementos básicos do Excel.
Observe na imagem acima que podemos ter os seguintes objetos diferentes:
- Objeto de pasta de trabalho (Objeto WorkBook): refere-se a uma pasta de trabalho do Excel aberta, portanto, temos 1 objeto de pasta de trabalho. Por exemplo, se tivermos 3 pastas de trabalho diferentes do Excel, teremos 3 objetos de pasta de trabalho.
- Objeto de planilha (Objeto Worksheet): um objeto de pasta de trabalho possui pelo menos um objeto de planilha. No exemplo da imagem acima, temos 3 objetos de planilha diferentes. Ou seja, Planilha1, Planilha2 e Planilha3.
- Objeto Range: Em um objeto de planilha podemos ter um objeto range. Aqui, temos RangeObject(“B4:DE9”).
- Objeto ActiveCell: Em um objeto range ou objeto de planilha podemos ter um objeto de célula.
- Objeto de Célula: Em um objeto de célula podemos ter Fonte, Tamanho, Cor, Valor, Borda, etc.
Os objetos do VBA são organizados em uma hierarquia e atuam como contêiner para os outros objetos. No Excel, por exemplo, em sua hierarquia temos o Objeto Application no topo,
- O objeto Application do Excel contém o objeto Workbook.
- O objeto Workbook contém objetos Worksheets, Charts, etc.
- O objeto Worksheet contém os objetos Range, Shape, Chart, etc.,
- O objeto Range contém o objeto Cell.
- O objeto Cell contém os objetos Font, Interior, Border, etc.
Como fazer referência a um objeto no VBA?
Para ver o funcionamento da hierarquia do VBA na prática, suponha que você queira fazer referência a um objeto Range. Conforme mostrado na imagem acima, este objeto está na parte inferior do organograma, ou seja, existem 3 etapas entre o objeto Application e o objeto Range.
Para conectar os diferentes objetos, você deverá utilizar um ponto (.) enquanto desce na hierarquia de objetos do VBA. Em outras palavras, você poderá se referir a um objeto Range usando a seguinte estrutura básica:
Application.Workbooks.Worksheets.Range
Observe que esta é apenas uma estrutura básica. Você notará que essa estrutura básica não identifica realmente um objeto VBA individual. Deste modo, é provável que você esteja se perguntando:
- Se houver várias pastas de trabalho ou planilhas, como o Excel sabe a qual delas estou me referindo?
- Como o Excel sabe qual é o intervalo com o qual desejo trabalhar?
Para fazer referência a um objeto de uma coleção, você pode usar uma das 2 opções a seguir:
Opção 1: Usar o nome do Objeto VBA
Neste caso, a sintaxe que você deve usar para se referir a um objeto é “Collection_name(“Object_name”)”. Em outras palavras:
- O nome da coleção relevante (collection_name) vem primeiro.
- Collection_name é seguido por parênteses ().
- Entre parênteses, você tem o nome do objeto VBA individual (Object_name).
- O nome do objeto VBA está entre aspas (“”).
- Se você não incluir as aspas, o Excel entenderá que o nome do objeto VBA é um nome de variável. Portanto, não será possível identificar o objeto desejado.
Para melhor compreensão, suponha que você esteja trabalhando com uma pasta de trabalho do Excel que possui três planilhas e queira trabalhar com a Planilha2. Neste caso, utilize uma das seguintes estruturas:
Worksheets("Planilha2")
ou
Sheets("Planilha2")
Opção 2: Usar o número de índice
A segunda opção para fazer referência a um objeto no VBA é usando o número de índice. Ao optar por essa opção, você deverá se referir a um objeto VBA usando Collection_name(Index_number). Esta estrutura é praticamente igual à anterior, com as 2 diferenças:
- Em vez de usar o nome do objeto VBA, você se refere a ele usando seu número de índice.
- Não é necessário usar aspas duplas entre parênteses, apenas um número.
Por exemplo, se você deseja trabalhar com a Planilha1, você pode usar uma das 2 opções a seguir:
Worksheets(1)
ou
Sheets(1)
Agora que você sabe como fazer referência a um objeto VBA individual em uma coleção, suponha que o objeto com o qual deseja trabalhar é a célula A1 na Planilha Comissão da Pasta de Trabalho Vendas.xlsx.
Usando o nome do objeto para se referir a cada um dos objetos VBA individuais (opção 1 acima), a referência totalmente qualificada para esta célula será:
Application.Workbooks("Vendas.xlsx").Worksheets("Comissão").Range("A1")
Como simplificar referências de objetos?
Como você pode observar no código acima, se você tivesse que referenciar cada objeto usando uma referência totalmente qualificada, seu código VBA ficaria muito longo e, do ponto de vista da digitação, isso pode ser um pouco chato. Além disso, e talvez mais importante, esses trechos muito longos de código VBA podem ser difíceis de ler.
Mas a boa notícia é que existem algumas maneiras de simplificar as referências a objetos, tornando o código VBA muito mais curto. Confira a seguir, algumas opções que você pode usar.
Opção 1: Simplificando o objeto Application
Ao criar macros, presume-se que você trabalhará com Excel. Em outras palavras, o Excel pressupõe que você esteja trabalhando com o objeto Application. Portanto, geralmente é possível omitir esse objeto quando se faz referências no VBA. Referir-se explicitamente (inserir) o objeto Application faz sentido apenas em alguns casos.
Deste modo, podemos aplicar o seguinte atalho à instrução referente à célula A1 na planilha Comissão dentro da Pasta de Trabalho Vendas.xlsx.
Workbooks("Vendas.xlsx").Worksheets("Comissão").Range("A1")
Opção 2: Simplificando Pastas de Trabalho e Planilhas ativas
Se você estiver criando códigos VBA dentro de um Módulo Padrão, além de assumir que você está trabalhando com o objeto Aplicativo, o Excel também assume que você está trabalhando com a Pasta de Trabalho ativa.
Se você tiver certeza de que a pasta de trabalho ativa atual do Excel é a pasta de trabalho com a qual deseja trabalhar, então poderá omitir essa parte da referência do objeto VBA conforme exemplo abaixo:
Worksheets("Comissão").Range("A1")
Por fim, se você tiver certeza de que a planilha do Excel com a qual deseja trabalhar é a planilha ativa no momento, você também poderá omitir essa parte da referência do objeto VBA conforme exemplo abaixo:
Range("A1")
Opção 3: Simplificando referências com With… End With
Uma alternativa para simplificar referências totalmente qualificadas é usar instruções With… End With. Essas instruções simplificam a sintaxe da macro executando várias instruções que se referem ao mesmo objeto VBA.
No exemplo abaixo, estamos usando a instrução With… End With para simplificar a referência ao intervalo A1:E200 no qual inserimos o texto “Excel Easy”, alteramos a fonte para negrito, inserimos borda dupla e alteramos a cor de preenchimento das células. Observe que em uma única instrução With… End With podemos simplificar qualquer ação dentro do intervalo.
With Range("A1:E200") .Value = "Excel Easy" .Font.FontStyle = "Bold" .Borders.LineStyle = xlDouble .Interior.Color = RGB(9, 227, 15) End With
Detalhes importantes sobre a simplificação de referências a objetos
Simplificar uma referência de objeto no VBA tem diversas vantagens, sendo a principal delas a possibilidade de encurtar o código e torná-lo mais fácil de ler. No entanto, simplificar referências de objetos totalmente qualificadas não é isento de erros.
Por exemplo, se você acredita que a planilha ativa atual é a Planilha1, quando na realidade é a Planilha2, você enfrentará problemas como:
- O Excel retorna um erro.
- O Excel retorna um resultado incorreto.
- O Excel executa uma ação errada que você não pode desfazer.
Portanto, recomendamos usar a simplificação de referências a objetos apenas quando apropriado. Em outras palavras, você não deve simplificar cegamente referências totalmente qualificadas o tempo todo.
Por fim, se você deseja aprender um pouco mais sobre a simplificação de referências à objetos, recomendamos esta videoaula do canal Hashtag Treinamentos.
Exemplos de códigos VBA
Conforme mencionado anteriormente, o VBA é uma ferramenta poderosa para automatizar tarefas pequenas ou projetos grandes. E para expandir ainda mais seu aprendizado sobre o assunto, listamos a seguir alguns exemplos de códigos VBA para que você possa ter uma melhor visão a respeito do poder que essa ferramenta pode proporcionar à suas planilhas.
Exemplo 1: Inserindo dados na célula ativa
Um dos usos mais básicos para os códigos VBA, é a possibilidade de inserir um determinado texto, número ou até mesmo uma data em células específicas do Excel. O exemplo abaixo mostra como é possível inserir um texto na célula que estiver ativa, ou seja, a célula selecionada pelo usuário utilizando a propriedade ActiveCell.
Sub Inserir_texto() ActiveCell.Value = "exceleasy.com.br" End Sub
Leitura recomendada:
Exemplo 2: Exibindo caixa de mensagem
As caixas de mensagem ou MsgBox no Excel são utilizadas quando desejamos mostrar alguma informação em uma macro, ou seja, ela exibe uma caixa de diálogo com uma mensagem pré-definida, que pode servir para mostrar um erro, confirmar a execução de uma tarefa, entre outras opções.
O código abaixo mostra um uso básico de uma MsgBox no VBA na qual exibe uma mensagem pré-definida para o usuário.
Sub Exemplo_MsgBox() MsgBox "Este é um exemplo de Msgbox" End Sub
Leitura recomendada:
Exemplo 3: Verificando se célula contém valor
No exemplo abaixo estamos utilizando uma instrução If Else para verificar se a célula A1 da planilha ativa contém um valor. Caso a célula contenha um valor, então o VBA retornará a mensagem “A célula contém um valor“. Se a célula estiver vazia, então o VBA retornará a mensagem “A célula não contém um valor“.
Sub VerificaCelula() If Range("A1").Value <> "" Then MsgBox "A célula contém um valor" Else MsgBox "A célula não contém um valor" End If End Sub
Leitura recomendada:
Exemplo 4: Destacando células vazias
Neste exemplo estamos utilizando o VBA para aplicar o preenchimento vermelho nas células vazias. Observe que primeiro declaramos a variável EmBranco sendo do tipo Range. Essa variável irá receber o intervalo que o usuário selecionar.
Por fim, utilizamos a função SpecialCells(xlCellTypeBlanks) para aplicar uma cor apenas nas células vazias da seleção.
Sub celulas_em_branco() Dim EmBranco As Range Set EmBranco = Selection EmBranco.SpecialCells(xlCellTypeBlanks).Interior.Color = vbRed End Sub
Leitura recomendada:
Exemplo 5: Destacando os 10 maiores valores de uma lista
Apesar de existir a possibilidade de destacar os 10 maiores valores de uma lista através da ferramenta de formatação condicional, você também pode criar este mesmo recurso através de um código VBA conforme exemplo abaixo:
Sub TopValores() Selection.FormatConditions.AddTop10 Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1) .TopBottom = xlTop10Top .Rank = 10 .Percent = False End With With Selection.FormatConditions(1).Font .Color = -16752384 .TintAndShade = 0 End With With Selection.FormatConditions(1).Interior .PatternColorIndex = xlAutomatic .Color = 13561798 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False End Sub
Exemplo 6: Destacando números negativos
Caso precise destacar valores negativos rapidamente, então você poderá utilizar o código VBA conforme exemplo abaixo.
O exemplo abaixo utilizar um loop For Each com a instrução If para verificar cada célula da seleção. Caso o valor da célula seja menor do que zero, então o VBA aplicará a cor da fonte vermelho para destacar o valor.
Sub NumerosNegativos() Dim Rng As Range For Each Rng In Selection If WorksheetFunction.IsNumber(Rng) Then If Rng.Value < 0 Then Rng.Font.Color= -16776961 End If End If Next End Sub
Exemplo 7: Inserindo números em série em células selecionadas
Neste exemplo, utilizamos um loop For Next para percorrer uma coleção de objetos (no caso, um intervalo de células selecionado pelo usuário) e inserir uma sequência numérica.
Primeiro, obtemos a contagem do número de linhas selecionadas e, em seguida, atribuímos esse valor à variável ContarLinhas. Em seguida, executamos o loop de 1 to ContarLinhas. Isto significa que o loop será executado na mesma quantidade que o número de linhas que o usuário selecionou.
Sub InserirNúmerosEmSérie() Dim Rng As Range Dim Contador As Integer Dim ContarLinhas As Integer Set Rng = Selection ContarLinhas = Rng.Rows.Count For Contador = 1 To ContarLinhas ActiveCell.Offset(Contador - 1, 0).Value = Contador Next Contador End Sub
Atalhos VBA no Excel
A seguir estão alguns dos atalhos que funcionam ao usar o VBA no MS Excel:
- Alt + F11 : Abra o Editor VBA
- F1: Exibe ajuda.
- F4: Exibe a Janela Propriedades se não se estiver oculta.
- F5: Executa o procedimento atual ou continua se estiver no modo de depuração.
- F8: Pode ser usado para iniciar a depuração de sub-rotinas que não requerem argumentos
- F9: Insere ou alterna um ponto de interrupção.
- Alt + F5: Retoma a execução através do manipulador de erros/executar o manipulador de erros.
- Alt + F11: Alterna entre Editor VBA e Excel
- Alt + A: Exibe o menu Arquivo.
- Alt + D: Exibe o menu Depurar.
- Alt + E: Exibe o menu Editar.
- Alt + F: Exibe o menu Ferramentas
- Alt + I: Exibe o menu Inserir.
- Alt + J: Exibe o menu Janela.
- Alt + O: Exibe o menu Formato.
- Alt + Q: Fecha a janela do Editor do Visual Basic e retorna ao aplicativo.
- Alt + S: Exibe o menu Suplementos.
- Alt + X: Exibe o menu Executar.
Dica: Alguns atalhos podem ser diferentes conforme o idioma do seu Office. Para conhecer outros atalhos do VBA, consulte este artigo.
Como aprender VBA?
Se você chegou até aqui, então é provável que tenha interesse em se aprofundar na programação VBA e talvez esteja se perguntando qual caminho deverá tomar.
Aqui no nosso site, já temos um post abordando este assunto e você poderá conferi-lo em: Como Aprender VBA? Um Guia para Iniciantes. No entanto, em resumo do que abordamos neste post, se você tem interesse em aprender a programação VBA, então recomendamos as seguintes dicas:
Dica 1: Tenha uma motivo para aprender: Descubra o motivo pelo qual você deseja aprender VBA. É para impressionar seu chefe? Mudança de carreira? Criar aplicações para o seu negócio?
Dica 2: Comece gravando macros: Usar o gravador de macros é uma das principais maneiras de começar a entender como funciona o VBA. Comece gravando macros mais simples e, posteriormente, analise o código VBA criado pelo gravador.
Dica 3: Lógica de programação: Aprender lógica é a base para qualquer linguagem e para o VBA não é diferente. Busque por livros, cursos, tutoriais e demais conteúdos para que você consiga compreender a lógica de programação.
Dica 4: Conheça os recursos do Office: Se você pretende programar VBA no Excel (o que é o mais comum do que outros softwares do Ms Office), então você precisará conhecer ao menos as funções avançadas como função matemática, função lógica e estatística, função de consulta e referência, declaração de condição e muito mais.
Dica 5: Aprenda praticando: Apenas ler um livro ou fazer um curso de VBA não te fará um programador. Você precisa colocar a mão na massa e praticar exercícios, criar suas próprias macros e explorar ao máximo os recursos do VBA. Lembre-se: a prática leva à perfeição.
Dica 6: Não pule etapas: Alguns usuários costumam não dar muita importância para conceitos básicos e, posteriormente, acabam tendo dificuldades e tropeços durante o processo. Dar atenção aos conceitos básicos da linguagem lhe poupará tempo ao longo da sua jornada de aprendizado.
Recursos de aprendizagem
- Programando Excel VBA Para Leigos
- Introdução ao VBA no Office
- Básico ao Avançado – O curso Completo de Macros e VBA Excel
- VBA – Quick Guide
- Top 116 Useful Excel Macro [VBA] Codes Examples
- Excel VBA Code Library – Useful Macros for Beginners
- VBA Objects – The Ultimate Guide
Conteúdos relacionados