Você está na página 1de 14

VBA- Excel

19 de fevereiro de 2011

CONFIDENCIAL E EXCLUSIVO
É proibido usar este material sem autorização expressa da YMT Group Criando novas perspectivas

VBA - Excel 1
Disclaimer

O emprego de todas logomarcas possui caráter estritamente ilustrativo, não indicando


parceria, promoção ou qualquer vínculo entre as organizações citadas e a YMTGroup.

Nenhuma das partes deste documento pode ser veiculada, transcrita ou reproduzida sob
qualquer forma ou por quaisquer meios — eletrônico, fotocópia, gravação ou outros — sem
prévio consentimento por escrito da YMTGroup

VBA - Excel
Agenda

• Variáveis

• Funções

• If-Then-Else

• Do While-Loop

• Sub-rotinas – Macros – Parâmetros

• Vetores/Matrizes

• Leitura de Planilhas

• Exercícios

VBA - Excel 3
Variáveis

• Integer
• Long
Principais Tipos • Double
• String
• Boolean

Sintaxe Exemplos

• Dim li_variavel As Integer li_variavel = 10

• Dim ll_variavel As Long ll_variavel = 10000000


Declarações em
• Dim ld_variavel As Double ld_variavel = 10,5
VBA
• Dim ls_variavel As String ls_variavel = “variável”

• Dim lb_variavel As Boolean lb_variavel = TRUE

VBA - Excel 4
Funções

Argumento

Function NomeDaFunção ( aParam1 As Tipo, ..., aParamN As Tipo ) As Tipo


Aqui vem o corpo da função
Estrutura
NomeDaFunção = Valor de Retorno
End Function

Function JurosSimples( aCapitalInicial As Double, aTaxa As Double, aNMeses As Integer ) As Double


Dim ld_CapitalAcrescido As Double
Exemplo ld_CapitalAcrescido = aCapitalInicial * (aTaxa/100) * aNMeses
JurosSimples = aCapitalInicial + ld_CapitalAcrescido
End Function

VBA - Excel 5
If-Then-Else

If Condição Then
Comando 1
Comando N
Estrutura Else Existe a possibilidade de
Comando N+1 utilizar múltiplas condições,
basta apenas adicionar o
Comando N+M comando Elseif Condição

End If

Enunciado Solução

O cálculo de juros progressivos em um


Function TaxaProgressiva1 (aSaldo As Double) As Double
investimento financeiro. Se a conta contém Dim ld_Taxa As Double
um saldo inferior a R$ 10.000,00, então o If aSaldo < 10000 Then
ld_Taxa = 0.02
banco paga juros mensais de 2%. Para
Exemplo Else
saldo superiores a R$10.000,00 o banco ld_Taxa = 0.03
paga 3%. A função TaxaProgressiva1 End If
TaxaProgressiva1 = aSaldo * (1+ ld_Taxa)
calcula o saldo da conta no final de um
End Function
mês.

VBA - Excel 6
Do While-Loop

Do While Condição
Comando 1
Estrutura
Comando N
Loop

Enunciado

Podemos ter uma taxa de juros inicial de 2% e incrementos de 0.1% mensais: no


primeiro mês a taxa de juros será de 2%, no segundo será 2,1%, etc. até o
Exemplo
décimo - primeiro mês, quando será de 3%. Um dado capital inicial deverá sofrer
juros compostos (acumulados) onde a taxa mensal varia progressivamente.

VBA - Excel 7
Do While-Loop

Solução

Function JurosProgr(aCapIni As Double,aTaxaIni As Double,aIncrTaxaMensal As Double,aNMeses As


Integer) As Double

Dim li_Mes As Integer 'Número de meses desde o início do investimento


Dim ld_TaxaAtual As Double 'Taxa do mês corrente
Dim ld_CapAtual As Double 'Capital ao final do mês corrente

ld_CapAtual = aCapIni
ld_TaxaAtual = aTaxaIni
Exemplo
li_Mes = 1
'Malha principal
Do While li_Mes <= aNMeses
ld_CapAtual = ld_CapAtual * (1 + ld_TaxaAtual / 100)
li_Mes = li_Mes + 1
ld_TaxaAtual = ld_TaxaAtual + aIncrTaxaMensal
Loop
JurosProgr = ld_CapAtual
End Function

VBA - Excel 8
Sub-rotinas – Macros – Parâmetros

Sub NomeSub( <Lista de Parâmetros> )


Sub-rotina
End Sub

Macro Sub-rotina que não necessita de parâmetros

Entrada de
Texto = InputBox( “Entre com um valor”)
Parâmetros

Dim li_Nprods As Integer


Dim ld_Preco1 As Double
Conversão
li_Nprods = CInt( InputBox( “Entre a quantidade de produtos:'' ))
ld_Preco1 = CDbl( InputBox( “Preço do primeiro produto'' ))

VBA - Excel 9
Parâmetros

O comando MsgBox(String) mostra o conteúdo do String ao usuário em uma janela.


Por exemplo, supondo que a variável MIN é do tipo Double e contém o valor 27,32, MsgBox(
Saída
“O melhor preço é: “ & MIN ) faz aparecer uma janela com a mensagem:
O melhor preço é: 27,32

Solução

Sub SomaNum()

Dim ld_Soma As Double


Dim li_Cont As Integer
Dim ld_Valor As Double

ld_Soma = 0
li_Cont = 0
ld_Valor = 0
Exemplo
Do While li_Cont < 4
ld_Valor = CDbl(InputBox(“Entre com o valor”))
ld_Soma = ld_Soma + ld_Valor
li_Cont = li_Cont + 1
Loop

MsgBox (“A soma é:” & ld_Soma)

End Sub

VBA - Excel 10
Vetores/Matrizes

Declaração • Dim vetor(1 To Nposições) as Variável


de Vetor • Dim vetor(Nposições) as Variável Lembrar que no
segundo caso, a
primeira posição é a 0!

Declaração • Dim matrix(1 To NLinhas, 1 to MColunas ) as Variável


de Matriz • Dim matrix(NLinhas, MColunas) as Variável
Lembrar que no
segundo caso, a
primeira posição é a
0,0!

VBA - Excel 11
Leitura de Planilhas

Solução Solução

Valor Valor = Cells(I, J)

Linha Rows(I)

Coluna Columns(J)

Range Range(“A1:Z60000”)

Manipulando Várias Planilhas Worksheets(“nome da planilha”').Cells(I,J)

Mudar planilha de atuação Worksheets(“nome da planilha”).Select

Adicionar/Remover planilhas Sheets.Add / Sheets.Delete

VBA - Excel 12
Exercício

Criar uma macro que leia a cotação do dólar de um certo período da tabela, ache o dólar médio do
período e converta o capital à esse valor, indicando também a maior variação diária entre as cotações,
quantitativa e percentualmente.
Exercício 1
Critério para calcular valor médio: O dia indicado como o de maior volume de vendas deverá ter
peso 3 vezes maior que os demais. Esse valor deverá ser inputado pelo usuário, dado que devido a
demora na consolidação dos dados, esse dado pode ser alterado freqüentemente

Crie uma macro que replique a planilha de resultado por código de cliente. Estruture o relatório para
Exercício 2
todos os clientes, fazendo um relatório de resultados ao final.

VBA - Excel 13
Renato Luiz Arakaki Rodrigo Marques Areco
Cel.: (011) 9566 3202 Cel.: (011) 9649 6700
Email: renato.arakaki@ymtgroup.com.br Email: rodrigo.areco@ymtgroup.com.br

VBA - Excel 14

Você também pode gostar