If you can't read please download the document
Author
duongkien
View
226
Download
1
Embed Size (px)
EXCEL e VBA
Visual Basic for Applications
Tutoriais de VBA
Escopo da ApresentaoEscopo da Apresentao
Integrao do VBA com ExcelDescrio do ambiente de programao do p g VBAConceitos bsicos de programaoConceitos bsicos de programaoExemplos usando VBA
Tutoriais de VBA
Background do BASICBackground do BASIC
BASIC = Beginners All-Purpose Symbolic Instruction Codeg p y
Linguagem criada no incio dos anos 60.
1991 Microsoft lana o VB para aplicaes standalone.1995 Microsoft lana Office 95 cujas aplicaes (Excel, Word,
PowerPoint, etc) incluem VBA.
VBA = Visual Basic for Applications linguagem script comum paraVBA Visual Basic for Applications linguagem script comum paratodas as aplicaes da Microsoft.
Tutoriais de VBA
Motivao para se usar o VBAMotivao 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
Ambiente de ProgramaoAmbiente de Programao
Nenhuma instalao extra necessria para se usar o VBA
P VBA D l d Cdi MPara acessar o VBA v: Desenvolvedor Cdigo Macro
Tutoriais de VBA
SeguranaCli b t d Offi O d E l N j l O
SeguranaClique no boto do Office e em Opes do Excel. Na janela Opesdo Excel clique em Central de Confiabilidade e a seguir emConfiguraoes da Central de Confiabilidade. Marque o botoHabilitar todas as MACROS.
Tutoriais de VBA
Visual Basic Editor (VBE)Visual Basic Editor (VBE)VBE pode ser acessado indo para: guia Desenvolvedor grupoCdigo Visual Basic ou pressionando Alt + F11
Tutoriais de VBA
Criando um Mdulo em VBACriando um Mdulo em VBAPara iniciar a programao devemos primeiro criar um Mdulo na pasta
(Workbook)
Tutoriais de 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 Verificaoimediata ou pressionando Ctrl + G. Ela como uma Janela Command Window
Tutoriais de VBA
Objetos Bsicos do VBAE t bj t i f t t d d VBA
Objetos Bsicos do VBAEstes so os objetos mais freqentemente usados do VBA:
Range: refere-se a uma clula particular do Excel. Exemplo:Range("a2") Value=3Range( a2 ).Value=3
Cells: uma outra maneira de se referir a uma clula 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 funes disponveis 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, varivel, etc Na Janela Imediata.
Exemplo:a=Worksheetfunction.Fact(3)? a
Tutoriais de VBA
? a6
VariveisVariveis
Elas contm dados temporriosPodemos pensar nas variveis como clulas do ExcelPodemos pensar nas variveis como clulas do Excel armazenaddas na memria RAM do PCEmbora no seja obrigatrio, uma BOA prtica de programaodefinir o tipo de informao que as variveis armazenaro (emexecues longas ela economiza UM POUCO de tempo). Isto chamado declarar uma varivelO tipo de informao que podemos armazenar numa variveldepende do tipo de dados escolhido para aquela varivel
Tutoriais de 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 nmeros 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 nmeros de pontos flutuantes entreDouble: armazena nmeros 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
Tipos de Dados do VBA (II)Tipos de Dados do VBA (II)
Date: armazena datas (nmeros 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 espcies de strings:strings:
Strings de tamanhos variveis: podem conterr at 2.000 milhes(2^31) de caracteresStrings de tamanho fixo: podem conter entre 1 e 64 KB (2^16) caracteres
Object: armazena endereos que se referem a outros objetosObject: armazena endereos que se referem a outros objetosVariant (predeterminada): tipo de dado default para cada varivelque no declarada como de qualquer outro tipo
Tutoriais de VBA
User defined type: tipo de dado criado pelo usurio
Declarao de VarivelDeclarao de Varivel
As variveis so declaradas antes de serem usadas, geralmente no incio do programaOs exemplos abaixo mostram os tipos de dados usados maiscomunsAdicionando Option Explicit fora a declarao da varivelAdicionando Option Explicit fora a declarao da varivel(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
Variveis EspeciaisVariveis EspeciaisC t d A l d i i i iContadores e Acumuladores: variveis especiais que
armazenam certos valores quando se executa um LAOContadores: armazena um, usado para contagem
Exemplo:Dim Iteration as Long
Iteration = Iteration + 1
Acumuladores: armazena qualquer valor, usado parasomatrios
E lExemplo:Dim Somatotal as Double
Tutoriais de VBA
Somatotal = Somatotal + Saldo
Estruturas Padres de ProgramaoEstruturas Padres de Programao
If End IfBifurcao
Select Case End SelectBifurcao
For NextCirculao
Do While - LoopCirculao
Exit Declaraes Especiais
Tutoriais de VBAWith End With
If End If (I)If End If (I)
Esta a maneira mais comum para manipular bifurcao l f () d E l anloga funo se() do Excel
Sintaxe:
If then[Instrues se a Condio if for Verdadeira][Instrues se a Condio if for Verdadeira]
Else[Instrues se a Condio if for Falsa]
End If
Tutoriais de VBA
If End If (II)If End If (II)
Exemplo:
Sub Multiplicao1()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
Select Case End Select (I)Select Case End Select (I)
Esta estrutura anloga estrutura If End IfEla foi projetada para evitar os If End If aninhados
Sintaxe:
Select Case Select Case Case < Condio 1>
[Instrues se a Condio 1 if for Verdadeira]...Case < Condition n>
[Instrues se a Condio n if for Verdadeira]Case Else
[Instrues se as n Condies Anteriores forem Falsas]End Select
Tutoriais de 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
For Next (I)For Next (I)
Este o lao mais simples e mais amplamente usadoEspecificamos quantas vezes o lao ser repetido
Sintaxe:
For To [Instrues][Instrues]
Next
Tutoriais de 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
Do While Loop (I)Do While Loop (I)
Este outro lao comumente usadoEspecificamos que o lao ser repetido enquanto uma certa condiof d d ifor verdadeira
Sintaxe:
Do While [Instrues Enquanto a Condio for Verdadeira][Instrues Enquanto a Condio for Verdadeira]
Loop
Tutoriais de 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
Exit (I)Exit (I)
Esta declarao 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 To [Instrues]If then
[Sair se a condio for verdadeira]End If
Tutoriais de VBA
End IfNext
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 nmero registrado & Contador - 1Total=0Total