Curso de VBA para Iniciantes – Conceitos Básicos

48
33266

Este artigo é uma introdução sobre VBA, no final do artigo você confere um link para uma playlist com vídeos do Curso de VBA para Iniciantes (os vídeos serão adicionados aos poucos na playlist).

O que é e para que serve o VBA?

O Visual Basic for Applications (VBA) é uma linguagem de programação incorporada em alguma aplicações da Microsoft, como o Excel, Word, PowerPoint, Outlook, Visio, etc. Também está incorporada parcialmente em algumas aplicações de terceiros como por exemplo no AutoCAD da AutoDesk.

O VBA é uma programação adaptada do Visual Basic que teve a sua base no antigo BASIC (um acrônimo para Beginner’s All-purpose Symbolic Instruction Code). O BASIC surgiu no início dos anos 60 como uma forma de ensinar técnicas de programação para estudantes universitários, mas ganhou mais respeito a partir de 1991, quando a Microsoft lançou o Visual Basic para Windows, um produto que tornou mais fácil o desenvolvimento de aplicações para o Microsoft Windows.

Como o nome sugere, o VBA é muito parecido com o Visual Basic, e por ser uma linguagem incorporada só pode rodar código de dentro da aplicação, em vez de executar como aplicação separada. Pode no entanto ser usado para controlar uma aplicação a partir de outra (por exemplo para criar um relatório no Microsoft Word a partir de dados no Excel, criar extensões (suplementos) para a aplicação anfitriã, e uma infinidade de outras possibilidades.

Os fundamentos básicos do VBA

Antes de começar a se aventurar pelas linhas de código é necessário conhecer alguns conceitos para obter uma ampla visão do que iremos trabalhar. Lembre-se que esse artigo é apenas uma introdução bem básica do VBA e que cada um dos conceitos citados abaixo podem ser bastante profundos.

Macro: um dos termos mais utilizados. Uma macro é um conjunto de instruções que devem ser executadas de forma lógica para obter um determinado resultado. Por exemplo, uma macro para criar um gráfico com os registros dos últimos 12 meses de produção de uma empresa.

Módulos: É um conjunto de procedimentos (procedures) agrupados, que podem ser visualizados ou editados através do VBE (Visual Basic Editor). Os módulos são armazenados em uma pasta de trabalho do Excel (workbook).

 Procedures: Uma procedure ou procedimento em tradução livre, é uma unidade do código que executa uma determinada ação. Uma procedure é basicamente uma macro, e podem ser de dois tipos: Sub ou Function.

  • Uma Sub procedure é escrita quando você deseja que a aplicação execute uma determinada tarefa. Por exemplo: Um procedimento que exibe uma mensagem na tela.
Sub ExibirMensagem()

MsgBox "Olá, Mundo!"

End Sub
  • Uma Function procedure é escrita quando você deseja que a aplicação execute determinados cálculos e retorne um valor (resultado).  No exemplo abaixo criamos uma função para retornar a média de dois valores. Uma função pode ser chamada através de outra procedure, ou através de fórmulas no Excel. Se após você criar a função abaixo, você digitar em uma célula =CalcMedia(10;20) o Excel irá retornar o valor 15.
Function CalcMedia(num1, num2)

CalcMedia = (num1 + num2)/2

End Sub

Variáveis: As variáveis são pequenos slots de memória que você pode utilizar para armazenar algum valor. Cada variável possui um nome. Por exemplo: no exemplo acima os valores que serão utilizados no cálculo da média são armazenados em duas variáveis, uma chamada num1 e a outra num2

Objetos: O VBA manipula objetos contidos em seu aplicativo anfitrião, que no nosso caso é o Excel. Um gráfico é um objeto. Uma planilha é um objeto. Uma célula é outro objeto. Tudo que existe dentro do Excel é um objeto.

Classes: Cada objeto pode ser classificado em uma classe de objeto, que determina que tipo de objeto ele é. Objetos da mesma classe tem os mesmos métodos e propriedades.

Propriedades: As propriedades são como configurações de um objeto. Algumas propriedades podem ser mudadas e outras não. Por exemplo: objetos da classe Range possuem uma propriedade chamada Address, que contém o endereço da célula ou intervalo a que se refere o objeto. Essa é uma propriedade do objeto que não pode ser alterada. Já outras propriedades podem sofrer alterações. Os mesmos objetos da classe Range possuem outra propriedade chamada Value, que contém o valor dentro da célula ou intervalo. Esse valor pode ser mudado a qualquer momento.

Para alterar uma propriedade de um objeto basta informar qual objeto e qual propriedade deseja, e atribuir um novo valor. Por exemplo:

Range("A1").Value = "Guru do Excel"

Você também pode acessar o valor da uma propriedade de um objeto e atribuí-lo a uma variável. No exemplo abaixo atribuímos o valor da célula A1 a variável Nome

Nome = Range("A1").Value

Métodos: Os métodos são ações que podem ser executadas com um objeto. Usando o mesmo objeto da classe Range, podemos por exemplo, chamar o método ClearContents, que limpa todo o conteúdo do objeto.

Para executar um método é só informar o objeto e qual método deseja executar.

Range("A1").ClearContents

Coleções: As coleções são grupos que contém vários objetos de um mesmo tipo. Por exemplo a coleção Workbooks contém vários objetos do tipo Workbook (mais especificamente as pastas de trabalhos abertas)

Eventos: os eventos são determinadas ações que podem ocorrer durante a execução do aplicativo. E é possível configurar uma ação (ou várias ações) para ser executada(s) quando tal evento ocorrer. Imagine que você deseja sempre que a sua pasta de trabalho for iniciada seja exibida uma mensagem de boas vindas ao usuário.

Sub workbook_open()

MsgBox "Seja Bem-vindo!"

End Sub

Facilitando um pouco o entendimento

Muitos conceitos apresentados aqui podem parecer confusos a primeira vista, principalmente para quem nunca teve contato com nenhuma outra linguagem de programação. Mas na primeira vídeo-aula curso vamos-nos aproximar um pouco mais desses conceitos, e também apresentarei a você o Visual Basic Editor. 

Para finalizar, gostaria que você deixasse nos comentários abaixo o que achou dos conceitos apresentado e suas expectativas para com o VBA.

Playlist Curso VBA para Iniciantes

  • tjbuenf

    to perdido o.O
    estava um tempo sema cessar e não terminei o curso de VBA para iniciantes. Agora não aparece mais o curso para eu completar e no YT só tem o video das cinco primeiras aulas. Tem como eu acessar as demais aulas?

    • Alemos

      tb não achei legal o sumiço do curso sem explicação, deixou quem estava acompanhando no vazio…. Dá uma situada aí Laennder!

  • Patrick

    Muito bom para quem pretende começar a programar no excel partindo do ponto de não conhecer nada de vba ou macro. Parabéns pelo conteúdo.

  • Valmir

    Muito bom e interessante! Com certeza será útil no processo de aprendizagem.

  • nanner

    Muito interessante o seu conceito sobre excel VBA!
    Estou iniciando um curso que esta me favorecendo muito no assunto: http://www.cursoadv.com esta acrescentando e muito meus conhecimento.

  • Robson Assuncao

    Muito bom os conceitos abordados por vc, parabens!
    Essas video aulas vai do iniciante ao avancado? quer dizer, ha continuidade do curso?

  • Décio Silva de Araújo

    Muito bom!! preciso aprender a programar a acredito que esse seja um bom começo.

  • Romulo Dias

    Parabéns! Finalmente alguém com uma didática que consegue descrever isso de forma simples. Estou iniciando meu aprendizado por aqui e já vi que finalmente conseguirei aprender VBA.

  • Tiago Correia

    Ansioso para iniciar o aprendizado. Parabéns pela iniciativa.

  • doni

    Parabéns pelo artigo e todo conteúdo disponibilizado aos apaixonados pelo excel… Meu fascínio pelas macros, bem teve inicio quando me deparei com um botão em uma planilha que recebi, que ao clicar o arquivo se fechava… dai em diante sempre procurei novidades, que me auxiliassem nas atividades diárias..
    Muito Sucesso Guru…

  • Lenno Souza

    Laennder, como você mesmo falou, a principio parece Grego misturado com Latim, mas espero que va clareando conforme avanço no curso.

  • Andrekice Furtado

    laennder eu criei alguns dados para alimentar uma planilha porem estou querendo fazer com que ao clicar no icone da planilha a mesma fique minimizada e a macro abre, porem nao estou conseguindo. me ajuda ai

  • Matheus Moreno

    Laennder, sou estudante do 8º Período de Engenharia de Produção e estou interessado em aprender e aplicar o VBA onde trabalho, nas disciplinas de programação que cursei no início do curso, tive contato com a linguagem “JAVA” e o programa “Eclipse”. O ambiente VBA e linguagem é muito diferente em relação a linguagem JAVA e o programa Eclipse?

  • Kelly Martins

    Laennder, estou apaixonada pelo blog e pela sua didática. Todos os termos foram explicados de forma clara. Você esta de parabéns!

    Atenciosamente,
    Kelly Martins!

  • Ansioso para iniciar o aprendizado. Parabéns pela iniciativa. http://metodoexcel.com.br/atalhos-excel/

  • Aristides

    Parabéns pelo compartilhamento!

  • sergio Lima

    Parabéns pela iniciativa. Irá me ajudar muito no trabalho.

  • Élisson Góis Gallas

    Perfeito

  • LEUTON BORGES RIBEIRO

    Muito legal o que vc faz. Parabéns! Tenho aprendido bastante.

  • Valdo

    Amigo Laennder, parabéns por todo trabalho de explanação, organização das aulas e ensino da utilização do Excel, sua dedicação e conhecimento nos capacita de forma irrepreensível.

    Estou muito feliz pela oportunidade de aprender com um profissional que tem se destacado pela qualidade do trabalho e reconhecimento de todos.

    Continue com essa disposição e aperfeiçoamento para o nosso contínuo reconhecimento.
    Forte Abraço.

  • Joaquim

    Apenas há uma coisa a dizer, Laennder. Obrigado pela sua disposição em ajudar aos, como eu, simples mortais.

  • Jose Paulo

    Muito instrutivo. Seu método de ensino é de fácil assimilação. obrigado por transmitir um pouco dos seus conhecimentos.

  • Rodrigo Carvalho

    Olá, estou com uma dificuldade e gostaria de saber se vcs podem me ajudar.
    Bom, eu tenho um banco de dados, e quero transportar as informações para oura planilha mas não para a próxima célula em branco e sim na data que eu digitei na planilha anterior. A segunda planilha tem todos os dias do ano eu quero digitar a data e os dados e quero uma macro para migrar estes dados na data digitada é possível?
    Aguardo ajuda o mais breve.
    Obrigado

    • José Alberto Novais Machado

      Dependendo como a planilha está organizada pode obter o dia a partir de uma célula e depois procurar na segunda planilha a linha ou coluna em que deseja colar os dades e fazer um colar com a ajuda da função deslocamento se necessário.

  • Marcelo Ayub Bueno

    Bom dia! trabalho diariamente com o excel, estou ansioso para ver o que é possível fazer com essa ferramenta.
    Já vi alguns videos, e o material é muito bom!
    Parabéns pelo trabalho!

  • DIMASS10

    BOM DIA, ESTOU INICIANDO AS AULAS DE VBA, E ESTOU GOSTANDO DO CONTEÚDO APRESENTADO, POR SER BEM EXPLICATIVO E DE FÁCIL ENTENDIMENTO. JÁ TIVE CONTATO COM OUTRAS LINGUAGENS DE PROGRAMAÇAO, MÁS O CONTEÚDO REALMENTE É BOM. OBRIGADO.

  • José Alberto Novais Machado

    Muito bom o artigo. Já vi muitas aulas e gostei bastante do conteúdo.

  • augustocap

    Bom dia,

    Gostaria de uma ajuda.

    Estou tendo um problema em fazer codigo vba para ajustar o corpo do email

    abaixo o código que estou usando

    ___________________________________________________________________________________________________________________________

    Sub Send_Range()

    ActiveSheet.Range(“A1:P13”).Select

    ActiveWorkbook.EnvelopeVisible = True

    With ActiveSheet.MailEnvelope

    .Introduction = “Senhores, Segue abaixo os dados para Cadastro.”

    .Item.To = “augusto.alves@frescatto.com”

    .Item.Cc = “estoque@frescatto.com”

    .Item.Subject = “Solicitação de Cadastro”

    .Item.Send

    MsgBox “Solicitação Enviada”

    Dim resultado As VbMsgBoxResult

    resultado = MsgBox(“Deseja limpar a planilha”, vbYesNo)

    If resultado = vbYes Then

    Sheets(“CADASTRO”).Select

    Range(“C7:O12”).Value = “”

    MsgBox “Limpeza concluída”

    Else

    MsgBox “Concluído”

    End If

    End With

    End Sub

    ___________________________________________________________________________________________________________________________

    Este codigo ele seleciona a area da planilha e envia no email, mas no momento que a outra pessoa recebe as informações, o email chega tudo desorganizado.

    A minha duvida é será que tem como na hora que vba jogar a informação para o email, ter uma maneira dele usar autoajuste dentro no email?

  • Rafaela

    Bom dia Laennder!
    Muito didática sua forma de explicar programação. Adorei a introdução que você escreveu e pude compreender , de forma simples, seus exemplos.
    É a primeira vez que estou vendo essa linguagem por uma nova necessidade no meu trabalho.
    Fui informada sobre um material que a Microsoft Academy disponibiliza mas não o encontrei…você saberia me dizer sobre ?

  • Cristiano Tartaglia

    Assisti o primeiro vídeo e li o artigo, tenho um pequeno contato com programação mas sempre achei o vba chato, nesse primeiro contato aqui no site, me interessei em aprender. Muito didático.

  • Ivanildo Junior

    Laender,

    Muito bom o módulo introdutório sobre VBA, abre muito nossa mente.

    Só não entendi, o código de abertura da pasta de trabalho exibindo uma mensagem de boas vindas na tela. Neste caso apenas não exibiria a mensagem na tela ao executar a Macro:

    Não seria: Worbooks.Open MsgBox “Seja vem vindo” ???

    No seu código está dessa forma, mas não consegui executar a mensagem automaticamente ao abrir a plan.

    Sub workbook_open()

    MsgBox “Seja Bem-vindo!”

    End Sub

    Pode me ajudar?

    • atmu

      Coloque apenas a palavra “Private” antes de “Sub”

      • Ivanildo Junior

        Olá,

        Na verdade o problema é que este código precisa estar dentro do Evento Open, pois ao acionar o gatilho de abertura do arquivo ele vao executar aqui que tem dentro do evento Open do objeto Workbooks. Grande abraço.

  • Denilson de Aquino

    Muito bom a iniciativa e compartilhamento de conhecimento. Parabéns! Pessoas como vc fazem a diferença! Pois, nada é pior do que não fazer nada pq só pode fazer um pouco! Se todos dessem uma contribuição com o que pode e/ou conhece o mundo seria muito melhor!
    Parabéns Laender!

  • teosbourne

    Preciso de uma ajuda. sempre tiro minhas duvidas aqui. Porém estou com um problema. Criei um Userform no VBA excel para uma tabela de multas. Tem um campo para digitar o codigo da multa e aparece toda descrição. So que nesse campo ao digitar um valor inexistente ele retorna a tela de depuração. Como Corrigir esse erro? ao digitar o codigo inexistente ele apenas não retorna os valores das caixas.
    se precisar encaminho por e-mail esse projeto

  • Ricardo Braga

    Incrivel!

  • Natacha Vechia

    Gostei bastante do Post, e ja estou treinando, so não consegui aplicar o cod de programação Range, mas estou seguindo com os outros posts e vou conseguir.

  • Everton – Chapecó

    Brother.. Preciso de uma dica bem simples e direta. Se puder, claro!
    Como eu inicializo uma variável numérica e alfanumérica?

  • Viviane Urbano de Araújo

    Vlw por compartilhar seu conhecimento. Às vezes é pouco intuitivo o que podemos fazer com o Excel, mas com esses esclarecimentos fica fácil =)

  • Fernando Cleiton

    Muito bom o artigo

  • Nalú Eo Valadão

    Excelente. Suas vídeos aulas são muito boas e claras. Obrigado por compartilhar seus conhecimentos.

  • Nilo Rodrigo

    Muito bom! Estou iniciando agora e espero aprender muito.

  • Ozorio Pelegrini

    há muitos, muitos anos atras, estudei Turbo Pascal, linguagem estruturada, bem parecida com o VBA. Gostaria de relembrar, e me aprofundar no Visual Basic

  • Italo

    Comecei me interessar pelo Excel a pouco mais de 1 ano, conheci algumas funções, aprendi algumas fórmulas e tô conseguindo me virar no trabalho com isso.
    E há tempo venho tentando começar a estudar VBA mas nunca me sentia preparado. Espero que agora eu possa aprender com as suas aulas.

  • boncover

    Olá Laender! Estou vendo suas video aulas para ver se consigo fazer uma interação do Excel com o Outlook, para disparar emails com o conteúdo do excel para uma lista de destinatários específica será que consigo?

  • Carlos Arnt Ramos

    Não ficou clara a distinção entre Macro e Módulo. Pode explicar um pouco mais?

  • Dorval Luz

    Gostaria de tirar algumas duvidas em VBA é possivel???

    Como criar uma combobox com urls web, exemplo GOOGLE, HOTMAIL, FACEBOOK , YOUTUBE…E QUE ESTA PAGINAS WEB ABRISSEM SOMENTE NO NAVEGADOR INTERNET EXPLORER??? GRATO.

  • Carlos Tavares

    Laennder parabens pela forma simples, objetiva porém detalhada sobre o assunto VBA para excel…Já conheço um pouco de excel e utilizo, porém, neste curto texto que você escreveu como introdução já aprendi bastante com ele! Muito bom!