Anda di halaman 1dari 45

Algoritmos e Raciocínio Lógico: Introdução ao

VBA – Visual Basic for Apps


Motivação

Pergunta: o que diferencia um marceneiro


hábil e experiente de qualquer pessoa
comum que sabe usar um martelo e um
serrote?
Motivação
Pergunta: o que diferencia um marceneiro hábil e experiente de qualquer
pessoa comum que sabe usar um martelo e um serrote?

A resposta: ele é excelente com suas


ferramentas. Ele pode ter uma ferramenta
comum e produz resultados incomuns.
Analogamente, um bom engenheiro, deve ser
capaz de produzir grandes resultados com
ferramentas (aparentemente) comuns
Motivação do curso
Deve ficar claro que:
1.Para análise de elementos finitos use programas como
ANSYS, Abaqus, Nastran, ...
2.Fluido-dinâmica – Fluent, Star-CCM, CFX, OpenFOAM
3.Análises específicas e simulações em geral Matlab,
MatrixS...

Mas o que a maioria dos softwares proprietários


acima citados têm em comum?
Integração com o Excel!!!
Motivação do curso
• Utilização de um software (relativamente) simples para
simular situações reais;

• Auxílio à tomada de decisões;

• Implementação de rotinas
Utilização do Excel na Engenharia
• Excel e restrição de sua utilização no meio acadêmico (MATLAB, R,
SPSS, SCILAB, MATHEMATICA,...);

VANTAGENS DESVANTAGENS
1. Facilidade da utilização 1. Restrição dos meios acadêmicos
2. Vasto material para pesquisa (Google) 2. Problemas com arredondamento de
3. Amplo alcance (maioria dos PC’s) números
4. Interface gráfica amigável 3. Dificuldade com processamento de
5. Ambiente que permite implementação grandes matrizes
de funções próprias...
Habilitando o recurso do VBA no Excel

1.Clique na aba “ARQUIVO”


Habilitando o recurso do VBA no Excel

1.Clique na aba “ARQUIVO”

2.Clique em “Opções”
Habilitando o recurso do VBA no Excel

1.Clique na aba “ARQUIVO”

2.Clique em “Opções”

3.Clique em “Personalizar Faixa de


Opções”
Habilitando o recurso do VBA no Excel

1.Clique na aba “ARQUIVO”

2.Clique em “Opções”

3.Clique em “Personalizar Faixa


de Opções”

4.Clique em “Desenvolvedor”
A aba do VBA no Excel
Primeiros Passos: “Hello World”
• Pressione as teclas “Alt+F11”
Primeiros Passos: “Hello World”
• Insira um novo módulo: Clique com o botão direito do mouse em Plan1(Plan1) > Inserir
“Módulo”
Primeiros Passos: “Hello World”
• Digite:
Sub HelloWorld()
MsgBox (“Hello world”)
End Sub

Percebam que ao digitar


Sub, automaticamente
aparece a expressão End
Sub
Primeiros Passos: “Hello World”
• Eis o resultado!
Entendo o “Hello World”
• A primeira linha: “Sub HelloWorld( )” é um padrão de início para
qualquer módulo de programa para o VBA/Excel.

• A linha “MsgBox (“Hello world”)” cria a janela

• Já a linha “End Sub” finaliza o módulo.


Segurança em relação à Programação VBA/Excel

Clique em Segurança de Macro


(na aba Desenvolvedor)
Segurança em relação à Programação VBA/Excel
Na Opção “Configurações de
Macro” selecione a opção:
“Desabilitar todas as macros
com notificação”

Esta opção permite que o usuário decida


ou não se o Excel possa executar as
macros desenvolvidas, sem necessidade de
um certificado digital ($$$)...
Salvando um arquivo que possui uma macro
Ao salvar o arquivo deve-se
selecionar o tipo de arquivo, no
menu.
Salvando um arquivo que possui uma macro
Ao abrir o menu de opções, deve-se
selecionar “Pasta de
Trabalho Habilitada
para Macro do Excel”
Definição de Variáveis
• O computador precisa de saber quando executa uma operação
se está a trabalhar com números ou com letras, ou com outro
tipo de variáveis.

• As variáveis são usadas para temporariamente armazenar


valores (numéricos ou não-numéricos), tendo cada variável
associado um Nome e um Tipo

Dim Nome As Tipo


Tipo de Variáveis

1.String para palavras


2.Boolean assume valores True ou False
3.Integer para valores inteiros
4.Long para valores inteiros grandes
5.Single para números decimais
6.Double para números decimais com mais casas
7.Currency para valores monetários
8.Date para datas entre 1 de janeiro de 100 até 31 de dezembro de 9999
9.Variant variável com valor numérico ou não-numérico (caracteres)
10.“User defined type” tipo de variável definido pelo utilizador, que pode consistir
de uma variável formada pelo conjunto de outras variáveis primárias
Observações sobre declarações de variáveis
1. Não pode começar com NÚMERO
Exemplo: 1prog, 10xpe, 2123cal, 1aula

2. Não pode ter espaço entre as palavras


Exemplo: aula 1, prog comp

3. Não pode ter acentos, c cedilha ou qualquer sinal de pontuação


Exemplo: aulão1, cçwqr

4. Não pode passar de 8 caracteres


Exemplo: programadecomputação1, Auladecomp
Declaração de constantes
• É possível declarar constantes nos programas, para que não precise
escrever seus valores:
Caixas de Mensagens
• O comando MsgBox serve para informar uma mensagem ao usuário;
• Podem receber argumentos opcionais: botão de indicação e o titulo da
caixa, por exemplo...
Sintaxe:

MsgBox ([prompt][, buttons] [, title] [, helpfile,


context])

onde:
Prompt – Mensagem obrigatória. Expressão de sequência de
caracteres exibida como mensagem na caixa de diálogo. O
comprimento máximo de prompt é de aproximadamente 1.024
caracteres.
Tittle – Opcional
Caixas de Mensagens
Constante Valor Descrição
VbOKOnly 0 Exibe somente o botão OK.
VbOKCancel 1 Exibe os botões OK e Cancelar.
VbAbortRetryIgnore 2 Exibe os botões Abortar, Repetir e
Ignorar.
VbYesNoCancel 3 Exibe os botões Sim, Não e Cancelar.
VbYesNo 4 Exibe os botões Sim e Não.
VbRetryCancel 5 Exibe os botões Repetir e Cancelar.
vbCritical 16 Exibe o ícone Mensagem crítica.
vbQuestion 32 Exibe o ícone Consulta de aviso.
vbExclamation 48 Exibe o ícone Mensagem de aviso.
vbInformation 64 Exibe o ícone Mensagem de
informação.
Mais informações em: http://analysistabs.com/vba/msgbox-examples-macros/
http://www.tomasvasquez.com.br/blog/microsoft-office/vba-emitindo-mensagens-personalizadas-com-msgbox
Caixas de Entrada
• A função MsgBox exibe uma caixa de mensagem ao usuário e aguarda uma resposta, além de permitir o
armazenamento de alguns tipos de informações pelo usuário:
1. Texto
2. Número
3. Fórmulas
4. Valores lógicos
5. Referências à células

Sintaxe:
InputBox(Prompt, [Title],[Default],[Left],[Top],[HelpFile],[HelpContextID],[Type])

Mais informações em: http://www.tomasvasquez.com.br/blog/microsoft-office/vba-emitindo-mensagens-personalizadas-com-msgbox


http://analysistabs.com/excel-vba/inputbox-examples-macros/
Situação problema: Média...
• Escreva um algoritmo para calcular a média de um aluno
a partir de duas notas. O programa também deverá exibir
a média e uma mensagem informando se o aluno foi
aprovado ou reprovado (lembrando que a média para
aprovação é mA  6)
Situação problema: Média...
• Este problema foi resolvido anteriormente,
entretanto surge a necessidade de avaliar uma
nova situação, no caso, o valor da média...
Estrutura Condicional
• Estruturas condicionais são aquelas que permitem ao
programa ocasionar “desvios” em sua execução, decidindo se
um conjunto de instruções é ou não executado;
• Permite a um mesmo programa atender diferentes demandas,
tornando-se mais completo;

Exemplo:
1.Um questionário sobre nomes de filhos só convêm ser
respondido por usuários que tenham filhos...
2.Um call center que lista numericamente as possíveis soluções...
3.O Cálculo da Média!!!
Estrutura Condicional - Fluxograma

IMPORTANTE: é sempre necessário que os


programas encontrem SEQUÊNCIAS
ALTERNATIVAS DE AÇÕES,
dependendo do valor de determinada
condição...
Estrutura condicional –
Operadores Relacionais

Operador Símbolo
Igual =
Diferente <> ou !=
Maior >
Maior ou igual >=
Menor <
Menor ou igual <=
Estrutura Lógica – Operadores Lógicos
• Necessidade, em algumas situações de avaliar, simultaneamente, mais de uma
expressão;
• Com isso faz-se necessário o uso de operadores lógicos “E” ou “OU”. Em VBA suas
sintaxes são:

Operador Símbolo
E And
OU Or
Comando If <condição> Then <comandos>
Else <comandos>

• Sintaxe:
If condição_1 Then
sequência_1
End If

• Se a CONDIÇÃO for VERDADEIRA os COMANDOS são EXECUTADOS;


• Caso a CONDIÇÃO for FALSA os COMANDOS NÃO são EXECUTADOS e o
programa segue suas linhas de programação...
Comando If <condição> Then <comandos>
Else <comandos>

• Sintaxe:
If condição_1 Then
sequência_1
Else
sequência_2
End If

• Avalia a condição_1 se ela for verdadeira (T, true) executa a sequência_1, caso
contrário executa a sequência_2
Comando If <condição> Then <comandos>
Else <comandos>

• Sintaxe:
If condição_1 Then
sequência_1
ElseIf
sequência_2
Else
sequência_3
End If

• Avalia a condição_1 se ela for verdadeira (T, true) executa a sequência_1, caso
contrário executa a sequência_2 e assim sucessivamente...
Sub Media()
Dim N1, N2 As Single
Dim Media As Single

N1 = InputBox("Nota 1")
N2 = InputBox("Nota 2")
Media = (N1 + N2) / 2
If Media < 5 Then
MsgBox "Aluno de REPROVADO, Média " & Media, 0
ElseIf Media = 5 Then
MsgBox "Aluno de RECUPERAÇÃO, Média " & Media, 0
Else
MsgBox "Aluno de APROVADO, Média " & Media, 0
End If
End Sub
Comando Select Case <expressão>
• Sintaxe
• O valor da variável de teste é comparado às
Select Case <expressão>
Case valor_1 expressões
sequência_1
Case valor_2
sequência_2 • Se os valores são iguais, a sequência
correspondente é executada
... ... ...
Case valor_n
sequência_n
Case Else

sequência_alternativa
End Select
Estruturas de Repetição (“Loop” ou
“Loopings”)
São os comandos lógicos que permitem ao programador
repetir partes do código um determinado número de vezes,
que pode ser pré-definido ou até que uma determinada
condição se verifique
Comando For ... Next
Sintaxe:
For <expressão> To <condição>
comandos
Next
Sub testfor2()
Sub testfor()
Dim i As Integer
Dim i As Integer
For i = 1 To 5
For i = 1 To 5 MsgBox "Esta é a operação nº "
MsgBox "Esta é a operação nº " & i &i
If i = 4 Then Exit For
Next
Next
End Sub End Sub
Comando Do While ... Loop
Sintaxe:
Do While <expressão>
comandos
Loop
CUIDADO COM LOOPING INFINITO
Sub dowhile()

Dim i As Integer

Do While i < 5

i=i+1

MsgBox "Esta é a operação nº " & i

Loop

End Sub
Comando While ... Wend
Sintaxe:
Do While <expressão>
comandos
Wend

Sub whilewend()
Dim i As Integer
While i < 5
i=i+1
MsgBox "Esta é a operação nº " & i
Wend
End Sub
Comando Do Until ... Loop
Sintaxe:
Do Until <expressão>
comandos
Loop

Sub dountil()
Dim i As Integer
i=0
Do Until i = 7
i=i+1
MsgBox "Esta é a operação nº " & i
Loop
End Sub
Para terminar - Exercícios
1. Utilize o conhecimento de condicionais e resolva o problema da média.

2. Fazer um algoritmo onde o usuário entra com o raio de círculo e o programa


mostra ao usuário a área do círculo.

3. Escreva um programa que leia um número digitado pelo usuário e dê como saída o
próprio número digitado, sua raiz quadrada e seu quadrado.

4. Fazer um programa onde o computador leia um número inteiro fornecido pelo usuário e
envia uma mensagem se esse número é par ou ímpar.

5. Considere uma equação do segundo grau


Ax² + Bx + C = 0
Utilizando-se da variável DELTA = B² - 4AC escreva uma macro que calcule as raízes da
equação tal que:
(i) Se não houver raízes (DELTA<0) o programa retorna a mensagem “não existem
raízes reais”.
(ii) Se houver uma única raiz (DELTA = 0) o programa mostra ao usuário a única
(iii) Se houver duas raízes mostre ao usuário calculando-as da forma:
X1 = ( -B + Sqr(DELTA) ) / ( 2*A )
X2 = ( -B - Sqr(DELTA) ) / ( 2*A )
Onde Sqr é a função do VBA para calcular a raiz quadrada de um número real.