53
EXCEL e VBA Visual Basic for Applications Tutoriais de VBA

Apresentacaosobre vba

Embed Size (px)

Citation preview

Page 1: Apresentacaosobre vba

EXCEL e VBA

Visual Basic for Applications

Tutoriais de VBA

Page 2: Apresentacaosobre vba

Escopo da ApresentaçãoEscopo da Apresentação

Integração do VBA com ExcelDescrição do ambiente de programação do ç p g çVBAConceitos básicos de programaçãoConceitos básicos de programaçãoExemplos usando VBA

Tutoriais de VBA

Page 3: Apresentacaosobre vba

Background do BASICBackground do BASIC

BASIC = Beginner’s All-Purpose Symbolic Instruction Codeg p y

Linguagem criada no início dos anos 60.

1991 Microsoft lança o VB para aplicações standalone.1995 Microsoft lança Office 95 cujas aplicações (Excel, Word,

PowerPoint, etc) incluem VBA.

VBA = Visual Basic for Applications linguagem script comum paraVBA Visual Basic for Applications linguagem script comum paratodas as aplicações da Microsoft.

Tutoriais de VBA

Page 4: Apresentacaosobre vba

Motivação para se usar o VBAMotivação para se usar o VBA

Excel Um programa muito eficiente (Sem concorrente!!)

C l t E lComplemento para o ExcelVBA

LOOPS: ineficiente no Excel eficiente no VBALOOPS: ineficiente no Excel, eficiente no VBA

Tutoriais de VBA

Page 5: Apresentacaosobre vba

Ambiente de ProgramaçãoAmbiente de Programação

Nenhuma instalação extra é necessária para se usar o VBA

P VBA á D l d Códi MPara acessar o VBA vá: Desenvolvedor Código Macro

Tutoriais de VBA

Page 6: Apresentacaosobre vba

SegurançaCli b tã d Offi O õ d E l N j l O õ

SegurançaClique no botão do Office e em Opções do Excel. Na janela Opçõesdo Excel clique em Central de Confiabilidade e a seguir emConfiguraçãoes da Central de Confiabilidade. Marque o botãoHabilitar todas as MACROS.

Tutoriais de VBA

Page 7: Apresentacaosobre vba

Visual Basic Editor (VBE)Visual Basic Editor (VBE)VBE pode ser acessado indo para: guia Desenvolvedor grupoCódigo Visual Basic ou pressionando Alt + F11

Tutoriais de VBA

Page 8: Apresentacaosobre vba

Criando um Módulo em VBACriando um Módulo em VBAPara iniciar a programação devemos primeiro criar um Módulo na pasta

(Workbook)

Tutoriais de VBA

Page 9: Apresentacaosobre vba

Janela ImediataA J l I di t d d i d E ibi J l “V ifi ã

Janela ImediataA Janela Imediata pode ser acesssada indo a: Exibir Janela “Verificaçãoimediata ou pressionando Ctrl + G. Ela é como uma Janela Command Window

Tutoriais de VBA

Page 10: Apresentacaosobre vba

Objetos Básicos do VBAE t ã bj t i f ü t t d d VBA

Objetos Básicos do VBAEstes são os objetos mais freqüentemente usados do VBA:

Range: refere-se a uma célula particular do Excel. Exemplo:Range("a2") Value=3Range( a2 ).Value=3

Cells: uma outra maneira de se referir a uma célula particular do Excel.Exemplo:

Cells(2,2).Value=6Cells(2,2).Value 6Worksheets: refere-se a uma planilha particular do Excel. Exemplo:

Worksheets(“Plan3").SelectWorksheetfunction: chama as funções disponíveis do Excel. ç p

Exemplo: Worksheetfunction.Fact(3)MsgBox: mostra uma mensagem no Excel. Exemplo:

MsgBox Application.Name? t lt d iá l t N J l I di t?: mostra um resultado, variável, etc Na Janela Imediata.

Exemplo:a=Worksheetfunction.Fact(3)? a

Tutoriais de VBA

? a6

Page 11: Apresentacaosobre vba

VariáveisVariáveis

Elas contêm dados temporáriosPodemos pensar nas variáveis como “células do Excel”Podemos pensar nas variáveis como células do Excel armazenaddas na memória RAM do PCEmbora não seja obrigatório, é uma BOA prática de programaçãodefinir o tipo de informação que as variáveis armazenarão (emexecuções longas ela economiza UM POUCO de tempo). Isto é chamado “declarar uma variável”O tipo de informação que podemos armazenar numa variáveldepende do tipo de dados escolhido para aquela variável

Tutoriais de VBA

Page 12: Apresentacaosobre vba

Tipos de Dados do VBA (I)Tipos de Dados do VBA (I)

Byte: armazena inteiros sem sinais entre 0 e 225Boolean: armazena Verdadeiro ou FalsoInteger: armazena inteiros entre -32.768 e 32.767Long: armazena inteiros entre -2.147.483.648 e 2.147.483.647C i t i l d 10 000 tCurrency: armazena inteiros na escala de 10.000 entre -922.337.203.685.477,5808 e 922.337.203.685.477,5807Single: armazena números de ponto flutuante entre -3,402823E38 e g p ,-1,401298E-45 para valores negativos e entre 1,401298E-45 e 3,402823E38 para valores positivosDouble: armazena números de pontos flutuantes entreDouble: armazena números de pontos flutuantes entre –1,79769313486231E308 e -4,94065645841247E-324 para valoresnegativos e entre 4,94065645841247E-324 e 1 79769313486232E308 l iti

Tutoriais de VBA

1,79769313486232E308 para valores positivos

Page 13: Apresentacaosobre vba

Tipos de Dados do VBA (II)Tipos de Dados do VBA (II)

Date: armazena datas (números de pontos flutuantes) entre 1º Janeiro de 100 e 31 de Dezembro de 9999 e tempo entre 0:00:00 e 23:59:59String: armazena string de caracteres. Existem duas espécies de strings:strings:

Strings de tamanhos variáveis: podem conterr até 2.000 milhões(2^31) de caracteresStrings de tamanho fixo: podem conter entre 1 e 64 KB (2^16) caracteres

Object: armazena endereços que se referem a outros objetosObject: armazena endereços que se referem a outros objetosVariant (predeterminada): tipo de dado default para cada variávelque não é declarada como de qualquer outro tipo

Tutoriais de VBA

User defined type: tipo de dado criado pelo usuário

Page 14: Apresentacaosobre vba

Declaração de VariávelDeclaração de Variável

As variáveis são declaradas antes de serem usadas, geralmente no início do programaOs exemplos abaixo mostram os tipos de dados usados maiscomunsAdicionando “Option Explicit” força a declaração da variávelAdicionando Option Explicit força a declaração da variável(recomendado)

Exemplos:Option ExplicitDim Result as LongDi T t l D blDim Totalsum as DoubleDim Description as StringDim Startdate as Date

Tutoriais de VBA

Dim Startdate as Date

Page 15: Apresentacaosobre vba

Variáveis EspeciaisVariáveis EspeciaisC t d A l d iá i i iContadores e Acumuladores: variáveis especiais que

armazenam certos valores quando se executa um LAÇOContadores: armazena um, usado para contagem

Exemplo:Dim Iteration as Long

…Iteration = Iteration + 1

…Acumuladores: armazena qualquer valor, usado parasomatórios

E lExemplo:Dim Somatotal as Double

Tutoriais de VBA

…Somatotal = Somatotal + Saldo

Page 16: Apresentacaosobre vba

Estruturas Padrões de ProgramaçãoEstruturas Padrões de Programação

If – End IfBifurcação

Select Case – End SelectBifurcação

For – NextCirculação

Do While - LoopCirculação

Exit Declarações Especiais

Tutoriais de VBAWith – End With

Page 17: Apresentacaosobre vba

If End If (I)If – End If (I)

Esta é a maneira mais comum para manipular bifurcaçãoÉ ál à f ã () d E lÉ análoga à função se() do Excel

Sintaxe:

If <Condição> then[Instruções se a Condição if for Verdadeira][Instruções se a Condição if for Verdadeira]

Else[Instruções se a Condição if for Falsa]

End If

Tutoriais de VBA

Page 18: Apresentacaosobre vba

If End If (II)If – End If (II)

Exemplo:

Sub Multiplicação1()Dim Mult as DoubleMult = Range(“a1”).Value*Range(“b1”).ValueIf Mult > 20 Then

MsgBox “Maior que 20"MsgBox Maior que 20"Else

MsgBox “Menor que ou igual a 20"End If

End Sub

Tutoriais de VBA

Page 19: Apresentacaosobre vba

Select Case End Select (I)Select Case – End Select (I)

Esta estrutura é análoga à estrutura If – End IfEla foi projetada para evitar os If – End If aninhados

Sintaxe:

Select Case <Expressão>Select Case <Expressão>Case < Condição 1>

[Instruções se a Condição 1 if for Verdadeira]...Case < Condition n>

[Instruções se a Condição n if for Verdadeira]Case Else

[Instruções se as n Condições Anteriores forem Falsas]End Select

Tutoriais de VBA

Page 20: Apresentacaosobre vba

Select Case End Select (II)Select Case – End Select (II)E lExemplo

Sub Multiplicacao2()Dim Mult as DoubleMult = Range(“a1”).Value*Range(“b1”).ValueSelect Case Mult

Case Is < 10MsgBox “Menor que 10"

Case Is < 15Case s 5MsgBox “Maior que ou igual a 10 e menor que 15"

Case Is < 20MsgBox “Maior que ou igual a 15 e menor que 20"MsgBox Maior que ou igual a 15 e menor que 20

Case ElseMsgBox “Maior que ou igual a 20"

End Select

Tutoriais de VBA

End SelectEnd Sub

Page 21: Apresentacaosobre vba

For Next (I)For – Next (I)

Este é o laço mais simples e mais amplamente usadoEspecificamos quantas vezes o laço será repetido

Sintaxe:

For <Contador=Início> To <Fim>[Instruções][Instruções]

Next

Tutoriais de VBA

Page 22: Apresentacaosobre vba

For Next (II)For – Next (II)

Exemplo:

Sub CalcularTotal1()Dim Contador As IntegerDim Total As DoubleDim Total As DoubleTotal=0For Contador = 2 To 15

If Range(“a" & Contador) Value = "Centro" ThenIf Range( a & Contador).Value = Centro ThenTotal = Total + Range(“b" & Contador).Value

End IfNextNextRange(“d2").Value = Total

End Sub

Tutoriais de VBA

Page 23: Apresentacaosobre vba

Do While Loop (I)Do While – Loop (I)

Este é outro laço comumente usadoEspecificamos que o laço será repetido enquanto uma certa condiçãof d d ifor verdadeira

Sintaxe:

Do While <Condição>[Instruções Enquanto a Condição for Verdadeira][Instruções Enquanto a Condição for Verdadeira]

Loop

Tutoriais de VBA

Page 24: Apresentacaosobre vba

Do While Loop (II)Do While – Loop (II)

Exemplo:

Sub Calcularotal2()Dim Contador As IntegerDim Total As DoubleContador = 2Total = 0Total 0Do While Range(“a" & Contador).Value <> “Sul"

Total = Total + Range(“b" & Contador).ValueC t d C t d 1Contador = Contador + 1

LoopRange(“d2").Value = Total

Tutoriais de VBA

End Sub

Page 25: Apresentacaosobre vba

Exit (I)Exit (I)

Esta declaração é usada para encerrar o bloco:For – Next Exit ForDo While – Loop Exit DoFunction – End Function Exit FunctionSub – End Sub Exit SubSub End Sub Exit Sub

Sintaxe: (dentro de um bloco For – Next)

For <Contador=Inicio> To <Fim>[Instruções]If <Condição> then

[Sair se a condição for verdadeira]End If

Tutoriais de VBA

End IfNext

Page 26: Apresentacaosobre vba

Exit (II)Exit (II)E lExemplo:

Sub CalcularTotal3()Dim Contador As IntegerDim Contador As IntegerDim Total As DoubleTotal=0For Contador = 2 To 15For Contador = 2 To 15

If Range(“b" & Contador).Value < 0 ThenMsgbox “Há um erro no número registrado ” & Contador - 1Total=0Total 0Exit For

End IfIf Range(“a" & Contador).Value = "Centro" Theng ( )

Total = Total + Range(“b" & Contador).ValueEnd If

Next

Tutoriais de VBA

Range(“d2").Value = TotalEnd Sub

Page 27: Apresentacaosobre vba

With End With (I)With – End With (I)

Esta estrutura é usada para encurtar as declarações e acelerar a execução do códigoE b j i il NÃO é t t d lEmbora seja similar, NÃO é uma estrutura de laço

Sintaxe:

With <Objeto>[Instruções][Instruções]

End With

Tutoriais de VBA

Page 28: Apresentacaosobre vba

With End With (II)With – End With (II)

Exemplo: SEM usar a estrutura With – End With

Sub CalcularTotal()Dim Contador As IntegerDim Total As DoubleContador = 2Total = 0Total 0Do While Worksheets(“Plan1").Range(“a" & Contador).Value <> “Sul"

Total = Total + Worksheets(“Plan1").Range(“b" & Contador).ValueC t d C t d 1Contador = Contador + 1

LoopWorksheets(“Plan1").Range(“d2").Value = Total

Tutoriais de VBA

End Sub

Page 29: Apresentacaosobre vba

With End With (III)With – End With (III)

Exemplo: usando a estrutura With – End With

Sub CalcularTotal()Dim Contador As IntegerDim Total As DoubleDim Total As DoubleContador = 2Total = 0With Worksheets(“Plan1")With Worksheets( Plan1 )

Do While .Range(“a" & Contador).Value <> “Sul"Total = Total + .Range(“b" & Contador).ValueContador = Contador + 1Contador = Contador + 1

Loop.Range(“d2").Value = Total

E d With

Tutoriais de VBA

End WithEnd Sub

Page 30: Apresentacaosobre vba

Rodando um ProgramaRodando um Programa

Um programa é um conjunto organizado de instruções para realizarcertas tarefascertas tarefasNos programas VBA são chamados de “procedimentos”Existem somente dois tipos de procedimentos VBA:

Function proceduresSub procedures

C t t f ã li d i fi i t t F tiCertas tarefas são realizadas mais eficientemente com Function procedures e algumas outras tarefas podem ser feitas maiseficientemente com Sub proceduresPara rodar um programa ou procedure, devemos então rodar umaFunction or Sub procedure

Tutoriais de VBA

Page 31: Apresentacaosobre vba

Function Procedures (I)Function Procedures (I)

Function Procedures: conjuntos de instruções que realizam certastarefas e retornam um valor (podemos pensar nas Function (p pProcedures como funções do Excel)

Elas NÃO podem modificar os objetos (p. ex.: modificar um valor da célula)Elas são usualmente executadas de uma célula automaticamente(como qualquer função Excel )

Sintaxe:

Function Procedure_Nome([Lista de Argumentos]) [As Tipo de Dado][Instruções]

Tutoriais de VBA

End Function

Page 32: Apresentacaosobre vba

Function Procedures (II)Function Procedures (II)

Exemplo:

Function Mult(Var1 As Double, Var2 As Integer) As DoubleMult = Var1 * Var2

End FunctionEnd Function

Tutoriais de VBA

Page 33: Apresentacaosobre vba

Localizando as Funções do Excel

Todas as funções que criamos podem ser encontradas e executadasem: Inserir Função… Definida pelo usuário

Tutoriais de VBA

Page 34: Apresentacaosobre vba

Sub Procedures (I)Sub Procedures (I)

Sub Procedures: conjuntos de instruções que realizam certastarefas

El PODEM difi bj t ( difi l dElas PODEM modificar os objetos (pex.: modificar um valor de célula)Elas NÃO podem ser executadas de uma célula (como umap (função Excel ou uma Function Procedure)Elas podem ser executadas manualmente do VBA Editor, da Janela Macro usando Formulários numa planilha etcJanela Macro, usando Formulários numa planilha, etc

Sintaxe:

Sub Procedure_Nome([Lista de Argumentos])

Tutoriais de VBA

[Instruções]End Sub

Page 35: Apresentacaosobre vba

Sub Procedures (II)Sub Procedures (II)

Exemplo:

Sub CalcularTotal2()Sub CalcularTotal2()Dim Contador As IntegerDim Total As DoubleContador = 2Total = 0Do While Range(“a" & Contador).Value <> “Sul"Do While Range( a & Contador).Value Sul

Total = Total + Range(“b" & Contador).ValueContador = Contador + 1

LLoopRange(“d2").Value = Total

End Sub

Tutoriais de VBA

Page 36: Apresentacaosobre vba

Executando um Sub Procedures no VBEColocando o cursor na macro podemos executar, ir para: Executar Executar

Sub/UserForm, ou pressionando F5Podemos também usar a Janela Imediata para executar as nossas macrosPodemos também usar a Janela Imediata para executar as nossas macrosMas gostaríamos de executar nossas macros do Excel…

Tutoriais de VBA

Page 37: Apresentacaosobre vba

Executando Sub Procedures no Excel (I)Todos os Sub Procedures que criamos podem ser encontrados e executadosem: Desenvolvedor Código Macros. Esta maneira de executar éenrolada, mas existe uma outra muita mais fácil

Tutoriais de VBA

Page 38: Apresentacaosobre vba

Executando Sub Procedures no Excel (II)

P d tPodemos executar nossasmacros usando FormuláriosFormulários melhoramsubstancialmente nossassubstancialmente nossasplanilhas e dão a elas um aspectoprofissional Professional

ProgrammingNota: existem 2 versões de

Formulários:Formulário “Completo”: no menu

g g

“Amateur”Programming

de Caixa de Ferramentas deControleFormulário “Simplificado”: nopmenu Formulário

Geralmente usaremos os Formulários

Tutoriais de VBA

Geralmente usaremos os Formulários“Simplificados”

Page 39: Apresentacaosobre vba

Forms (I)Forms (I)

LabelButton List Box Combo Box Spinner

Group Box Check Box Option Button Scroll Bar

Tutoriais de VBA

Page 40: Apresentacaosobre vba

Formulários (II)Formulários (II)

Label: contém apenas texto informativo

Group Box: grupos de formulários relacionados

B tt t d i dButton: apenas executa uma macro quando pressionado

Check Box: ativa ou desativa uma alternativa

Option Button: seleciona uma entre muitas alternativas

Tutoriais de VBA

Page 41: Apresentacaosobre vba

Formularios (III)Formularios (III)

List Box: contém uma lista de elementos

Combo Box: contém uma lista de elementos drop-down

S ll B l t é d i t l d lScroll Bar: rola através de um intervalo de valores

Spinner: muda o valor de uma célula

Tutoriais de VBA

Page 42: Apresentacaosobre vba

Executando Macros com um ButtonEsta é a Forma natural de se executarem macros de uma planilha.Contudo, podemos atribuir uma macro a qualquer outro Formulário

Tutoriais de VBA

Page 43: Apresentacaosobre vba

Propriedades de uma Group Box3-D shading: dá o aspecto de um Formulário 3-D

Nota: este Formulário é usado freqüentemente para melhorar o aspectoq p pvisual da planilha. Contudo, é essencial para agrupar Option Buttons

Tutoriais de VBA

Page 44: Apresentacaosobre vba

Propriedades do ButtonPropriedades do Button

Esta é a Forma natural para executar macros da planilha.

Não existem propriedades interessantes para este Formulário

Tutoriais de VBA

Page 45: Apresentacaosobre vba

Propriedades da Check BoxPropriedades da Check Box

Value: determina o estado da Check Box. Ela pode ser NãoV ifi d V ifi d Mi t d (i d fi id )Verificada , Verificada ou Misturada (indefinida)

Cell link: refere-se à célula que armazenará o estado da CheckCell link: refere se à célula que armazenará o estado da CheckBox. Ela armazenará False (Não Verificada), Verdadeira(Verificada) ou #N/A (Misturada)

3-D shading: dá o aspecto de Formulário 3-D

Tutoriais de VBA

Page 46: Apresentacaosobre vba

Propriedades do Option ButtonPropriedades do Option Button

Value: determina o estado do Option Button. Ele pode ser NãoV ifi d V ifi dVerificado ou Verificado

Cell link: refere-se à célula que armazenará o estado do OptionCell link: refere se à célula que armazenará o estado do Option Button. Ela armazenará 0 (Não Verificado) ou 1 (Verificado). Se mais do que 1 Option Buttons forem usados (quase sempre), a célula armazenará o número de Option Button Verificadoscélula armazenará o número de Option Button Verificados

3-D shading: dá o aspecto de Formulário 3-D g p

Tutoriais de VBA

Page 47: Apresentacaosobre vba

Propriedades da List BoxPropriedades da List Box

Input range: refere-se a uma lista de elementos numa planilha

Cell link: refere-se à célula que armazenará o elementoselecionadoselecionado

Selection type: especifica a espécie de seleção. A maioriafrequentemente usada é Single

3 D shading: gives the Form a 3 D aspect3-D shading: gives the Form a 3-D aspect

Tutoriais de VBA

Page 48: Apresentacaosobre vba

Propriedades of Combo BoxPropriedades of Combo Box

Input range: refere-se a uma lista de elementos numa planilha

Cell link: refere-se a uma célula que armazenará o elementoselecionadoselecionado

Drop down lines: especifica o número de elementos mostradosquando a Combo Box estiver listando os elementos

3 D shading: dá o aspecto de Formulário 3 D3-D shading: dá o aspecto de Formulário 3-D

Tutoriais de VBA

Page 49: Apresentacaosobre vba

Propriedades da Scroll BarPropriedades da Scroll Bar

Current Value: mostra o valor atual da Scroll Bar

Minimum value: mostra o valor mínimo da Scroll BarMinimum value: mostra o valor mínimo da Scroll Bar

Maximum value: mostra o valor máximo da Scroll Bar

Incremental change: mostra quantas unidades a Scroll Bar mudaquando uma extremidade é clicada

Page change: mostra quantas unidades a Scroll Bar muda quando aparte interna for clicada

Cell link: refere-se à célula que armazenará o valor atual da ScrollBar

Tutoriais de VBA3-D shading: dá o aspecto de Formulário 3-D

Page 50: Apresentacaosobre vba

Propriedades do SpinnerPropriedades do Spinner

As mesmas propriedades da Scroll Bar, exceto para mudança dePá i ã tá di í l t F lá iPágina, que não está disponível para este Formulário

Tutoriais de VBA

Page 51: Apresentacaosobre vba

Exemplo de Excel + VBAExemplo de Excel + VBA

A planilha contém os preços de abertura diários de 5 anos da Bayer, Microsoft, Exxon e Bank of America

Tarefas:

1. Use uma Combo Box para escolher uma companhia2. Usando Option Buttons crie 3 alternativas de retornos: semanal,

mensal ou annual3. Usando Option Buttons crie 2 alternativas de retornos : contínuo

ou discreto4. Usando Check Boxes crie 3 alternativas: calcule o retorno

médio e/ou a variança dos retornos e/ou os parâmetros OLS (regressão linear) do CAPM

5. Use um Button para executar o programa (Sub Procedure) e lt d l

Tutoriais de VBA

armazene os resultados numa nova coluna

Page 52: Apresentacaosobre vba

Depurador (Debugger) do VBADepurador (Debugger) do VBAD t é t d ãDepurar ou consertar programas é um aspecto da programação queNENHUM programador pode evitar. Contudo, o VBA tem um poder de depurarD f t i t t d d ã ãDuas ferramentas importantes de depuração são:

BreakpointsExecução Passo por Passo, em : Debug Step Into, oupressionando F8

Tutoriais de VBA

Page 53: Apresentacaosobre vba

Gravador de MacroGravador de MacroO Gravador de Macro é uma característica muito importante do VBA (e deO Gravador de Macro é uma característica muito importante do VBA (e de muitas outras linguagens)Sua intenção é principalmente ajudar os usuários do Excel a criarem macros (e acelerar tarefas repetitivas)(e acelerar tarefas repetitivas)Contudo, um uso inteligente do Gravador de Macro pode expandir o Excel além do seu escopo original e acelerar o processo de aprendizagem de programaçãoprogramaçãoPodemos acessar isto em: Ferramentas Macro Gravar Nova Macro…

Tutoriais de VBA