O documento discute programação em VBA, incluindo estruturas sequenciais, variáveis, tipos de dados e funções como MsgBox para saída de valores. Explica como gravar macros, declarar variáveis, escrever em células do Excel e exibir mensagens.
1. Programação de
Computadores
Luiz Henrique Silva
Engenheiro Eletricista e de Segurança do Trabalho
Mestrado em Engenharia Elétrica (UFBA)
Doutorando em Engenharia Elétrica (UFBA)
2. 17/11/2016 2
Programação em VBA - Estrutura Sequencial
Visual Basic
Permite a automatização de procedimentos e tarefas repetitivas no dia a dia e
cotidiano profissional através da macro.
O que é uma Macro?
Um macro contem uma lista das instruções a realizar para executar uma determina
da tarefa. São programas que executam tarefas específicas, automatizando-as.
Quando uma macro é ativada, executa uma sequência de instruções.
Gravação de um Macro
Quando uma dada operação envolvendo uma série de ações deve ser utilizada
frequentemente, faz sentido tentar automatizar a sua execução.
3. 17/11/2016 3
Programação em VBA - Estrutura Sequencial
A instalação básica do Excel não permite o acesso imediato à barra de desenvolvedor
(developer). Assim, é necessário fazer a sua instalação. Portanto, siga as instruções
seguintes:
• Começar por clicar na barra Arquivo (File ou Arquivo);
• Selecionar opção (Options ou Opções);
• Depois clicar na categoria personalizar faixa de opções (Customize Ribbon Personalizar
Faixas de Opções);
• Posteriormente vá na lista das Guias principais (Main Tabs) ;
• click em desenvolvedor (Developer ou Desenvolvedor) e finalmente OK.
>> Arquivo
>> Opções
>> Personalizar faixas de opções
>> Desenvolvedor
5. 17/11/2016 5
Programação em VBA - Estrutura Sequencial
Menu
>> Exibição
>> Macros
>> Gravar a macro
Nome da Macro
Shortcut key - indicar uma tecla
de atalho que permite arrancar
automaticamente a macro
Localização em que
será armazenado
Descrição das suas funções
gravação da macro
6. 17/11/2016 6
Programação em VBA - Estrutura Sequencial
Para a gravação da
Macro
Lista de Macros
executar dá-se início à
sequência de tarefas
que foram previamente
gravadas
7. 17/11/2016 7
Programação em VBA - Estrutura Sequencial
Ativar o gravador de macros
Desativar o gravador de macros
Operações sobre macros:
• Executar (existem 4 formas diferentes de executar uma macro);
• Editar;
• Alterar;
• Eliminar;
• Atribuir uma tecla de atalho ou um botão.
8. 17/11/2016 8
Programação em VBA - Estrutura Sequencial
Para inserir o script no Visual Basic do Excel sugere-se, por exemplo, que no menu “Developer”
insira um botão de comando usando “insert form controls”;
9. 17/11/2016 9
Programação em VBA - Estrutura Sequencial
Clicando agora sobre o botão com a tecla do lado direito do rato escolha “assign macro”
e finalmente “new “ ou “edit” abre a janela de edição VB:
10. 17/11/2016 10
Programação em VBA - Estrutura Sequencial
Nesta janela é possível visualizar a hierarquia dos projetos de VBA
ativos.
•Neste caso está visível um projeto que corresponde ao livro com
que nos encontramos a trabalhar: VBAProject (Exercícios)
•Na pasta Modules está visível um Ficheiro (módulo) onde são
programadas as macros.
Explorador do projeto (Project Explorer)
Explorador do projeto (Properties)
Nesta janela é possível visualizar e alterar um conjunto de
propriedades que definem cada objeto que constitui o projeto, neste
caso, a folha3.
11. 17/11/2016 11
Estrutura Sequencial
Programa Nome
INICIO
Declarações ou Sequência de Instruções (ler, escrever, calcular)
FIM
Estrutura Sequencial ou um Módulo em VBA
Sub Macro3()
‘Comandos
End Sub
Programação em VBA - Estrutura Sequencial
Sub vem da palavra em língua inglesa Subscript (Procedimentos). Todo módulo é um
conjunto de procedimentos.
12. 17/11/2016 12
Estrutura Sequencial
Além disso, em programas na linguagem VBA não há distinção de onde você inicia a
digitação das suas linhas e, assim, usamos essa característica a nosso favor, adicionando
espaços em algumas linhas do programa para facilitar sua leitura
Essa adição de espaços em uma linha é chamada tabulação.
Programação em VBA - Estrutura Sequencial
13. 17/11/2016 13
Programação em VBA - Estrutura Sequencial
Saída de Valores – Função Escrever
A instrução Escrever é utilizada quando deseja-se mostrar informações na tela do computador,
ou seja, é um comando de saída de dados.
- Exibe na tela a resposta dada pelo programa ao usuário.
- Representado pela função MsgBox ”Texto”.
Poderá retornar apenas uma mensagem:
MsgBox “Tem a certeza que quer sair do programa?”
Forma Geral:
MsgBox “Mensagem”, “Estilo”, “Título”
14. 17/11/2016 14
Programação em VBA - Estrutura Sequencial
Saída de Valores – Função Escrever
MsgBox “Mensagem ou aviso”, “Estilo”, “Título”
Esta função recebe por argumento a mensagem que se pretende dar ao utilizador (e que é
obrigatório definir) e mais uma série de argumentos úteis para facilitar o diálogo que são
facultativas de definir. São eles:
§ Mensagem – (obrigatório) , deve-se escrever a mensagem desejada em de forma sucinta,
ou seja, breve entre aspas.
§ O Estilo – (opcional) que corresponde ao tipo de botões e de ícone identificativo para
mensagem (estão disponíveis botões como “Yes”, “No”, “Cancel”, “OK”, etc e ícones como
exclamação, Informação, Questão, Crítico, etc);
15. 17/11/2016 15
Programação em VBA - Estrutura Sequencial
Constante Valor Descrição
vbOKOnly 0 Exibe apenas o botão OK.
vbOKCancel 1 Exibe apenas os botões OK e Cancelar.
vbAbortRetryIgnore 2 Exibe os botões Anular, 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.
16. 17/11/2016 16
Programação em VBA - Estrutura Sequencial
Saída de Valores – Função Escrever
MsgBox “Mensagem ou aviso”, “Estilo”, “Título”
Esta função recebe por argumento a mensagem que se pretende dar ao utilizador (e que é
obrigatório definir) e mais uma série de argumentos úteis para facilitar o diálogo que são
facultativas de definir. São eles:
§ Mensagem – (obrigatório) , deve-se escrever a mensagem desejada em de forma sucinta,
ou seja, breve entre aspas.
§ O Estilo – (opcional) que corresponde ao tipo de botões e de ícone identificativo para
mensagem (estão disponíveis botões como “Yes”, “No”, “Cancel”, “OK”, etc e ícones como
exclamação, Informação, Questão, Crítico, etc);
§ o Título, que aparece na barra superior azul da caixa;
17. 17/11/2016 17
Programação em VBA - Estrutura Sequencial
Saída de Valores – Função Escrever
MsgBox “Tem a certeza que quer sair do programa?”, vbYesNo, “Programa de teste”
MsgBox “Tem a certeza que quer sair do programa?”, , “Programa de teste”.
A caixa só é fechada depois de o utilizador “clicar” um dos botões disponíveis. O valor
retornado pela função, indica o botão que foi “clicado” pelo utilizador.
Mensagem
Estilo da Mensagem
Título
18. 17/11/2016 18
Programação em VBA - Estrutura Sequencial
Saída de Valores – Função Escrever
Exercício 01 – Faça um programa em português estruturado e em linguagem VBA para
exibir a mensagem:
• Mensagem 01: Bem vindo ao nosso programa!
• Mensagem 02: Erro! (com uma mensagem sonora)
• Mensagem 03: Deseja escolher a primeira opção?
Explore outras mensagens através de estilos diferentes. Para tal use o comando MsgBox
19. 17/11/2016 19
Programação em VBA - Estrutura Sequencial
Saída de Valores – Função Escrever
Exercício 01 – Resposta
Sub Execicio01()
' Programa: Execicio01
' Data 27 de Setembro
' Programador: Luiz Henrique
MsgBox "Bem Vindo ao nosso programa!", "64", "Programa Mensagem"
MsgBox "Erro!", "16", "Mensagem"
MsgBox "Deseja escolher a primeira opção!", "4", "Programa Mensagem"
MsgBox "Deseja sair do programa?", vbYesNo, "Programa Mensagem"
End Sub
20. 17/11/2016 20
Programação em VBA - Estrutura Sequencial
Saída de Valores – Função Escrever
Cells(i, j) ou Cells(i, j).Value
i = linha
j = Coluna
Escreve na celula ativa
Ex. Cells(1,1) = “Reprovado”
Cells(1,1) = 3,14
Range(“A1”) = “Aprovado”
Range(“A1”) = 3,14
Range(A1) ou Range(A1).Value
Worksheets("Plan3").Cells(1,1) = “Aprovado”
Worksheets("Plan3").Cells(1,1) = 7
Worksheets("Plan3").Range("A1") = 7
Worksheets("Plan3"). Range("A1") = “Reprovado”
Escreve na celula da planilha requisitada
A1 = linha1 e coluna1
21. 17/11/2016 21
Programação em VBA - Estrutura Sequencial
Saída de Valores – Função Escrever
Ex. Exibindo uma mensagem em uma
célula na tabela do excel.
Sub Verifica_Lucro()
For i = 1 To 21
If Cells(i, 1) >= 7 Then
Cells(i, 2) = “Aprovado"
Else
Cells(i, 2) = “Reprovado"
End If
Next
End Sub
Ex. Exibindo uma mensagem
relacionada a um dado preenchido
na tabela.
Sub verifica_Valor()
If Cells(2, 2) > 10 Then
MsgBox "Valor máximo excedido!"
End If
End Sub
22. 17/11/2016 22
Exercício 02 – Faça um programa em VBA para escrever palavras e números em uma planilha
do excel.
• Associada a uma célula do excel;
• Várias células do excel;
• Associada a uma célula do excel de uma planilha específica;
• Várias células do excel de uma planilha específica;
Programação em VBA - Estrutura Sequencial
23. 17/11/2016 23
Exercício 02 – Resposta
Sub Exercicio01()
' Programa: Execicio01
' Data 27 de Setembro
' Programador: Luiz Henrique
' Atalho do teclado: Ctrl+b
'Associada a uma célula do excel;
Cells(1, 1) = "Luiz"
Cells(1, 2) = 3.14
Range("A2") = "Luiz"
Range("B2") = 3.14
Programação em VBA - Estrutura Sequencial
‘Várias células do excel;
For i = 3 To 5
Cells(i, 1).Value = "Lucro bom"
Next
24. 17/11/2016 24
Exercício 02 – Resposta
Sub Exercicio01()
' Programa: Execicio01
' Data 27 de Setembro
' Programador: Luiz Henrique
' Atalho do teclado: Ctrl+b
‘Associada a uma célula do excel
de uma planilha específica;
Cells(1, 1) = "Luiz"
Cells(1, 2) = 3.14
Range("A2") = "Luiz"
Range("B2") = 3.14.
End Sub
Programação em VBA - Estrutura Sequencial
' Várias células do excel de uma planilha especificada;
For i = 3 To 5
Worksheets("Plan3").Cells(i, 1).Value = "Lucro bom“
Next
25. 17/11/2016 25
Variáveis
Uma variável, é um espaço da memória do computador que "reservamos" para guardar
informações (dados). Como o próprio nome sugere, as variáveis, podem conter valores
diferentes a cada instante de tempo, ou seja, seu conteúdo pode variar de acordo com as
instruções do algoritmo.
Programação em VBA - Estrutura Sequencial
Dim (no procedimento)
Dim ou Private (no módulo)
Public (no módulo)
Dim – O valor da variável é retido apenas enquanto o procedimento no qual ela foi declarada
estiver em execução.
Private – O valor fica disponível a todos os procedimentos dentro do módulo onde a variável foi
declarada.
Public – A variável pode ser acessada pelos procedimentos de vários módulos de uma pasta de
trabalho.
26. 17/11/2016 26
Variáveis
A declaração de uma variável em VBA é feita da seguinte maneira:
Dim Nome As Tipo
Programação em VBA - Estrutura Sequencial
Exemplo:
Dim Nome As String
Dim Numero As Integer
Dim DataDeNascimento As Date
Dim Contador As Integer
Nome = “Luís Fernandes”
Numero = 91
Data_de_Nascimento = “19-08-1977”
Contador = 25
27. 17/11/2016 27
Variáveis
Regras para escolher um identificador:
1) Um nome de identificador deve começar por uma letra:
2) Ser único dentro do mesmo nível de escopo:
3) Não pode conter um espaço entre caracteres do nome (o único caractere especial válido
para batizar variáveis é _ ).
Programação em VBA - Estrutura Sequencial
• Válido: Nome, Valor1, Valor 2, Media, Preco.
• Inválido: 1Valor, média ou Preço.
• Inválido: Dim Nome1 String
Dim Nome1 Single
• Válido: Dim Nome_Cliente String
• Inválido Dim Nome Cliente Single
28. 17/11/2016 28
Variáveis
Palavras-reservadas (palavras-chave) – são identificadores predefinidos que possuem
significados especiais para o interpretador do algoritmo.
• Exemplo: For, If, Else, Case, Next, Interger, Single, Double, Dim, Public, Private etc .
• Outras Palavras-Chave: as, byref, byval, case, close, const, date, declare, dim, each, else,
empty, false, for, friend, function, get, input, if, is, len, let, lock, next, new, nothing, on,
open, option, print, public, private, resume, seek, select, set, static, string, sub, then, to,
true, type, variant, with, while, write.
O conteúdo de uma variável pode ser alterado, consultado ou apagado quantas vezes forem
necessárias durante o algoritmo.
Programação em VBA - Estrutura Sequencial
29. 17/11/2016 29
Variáveis
As mais utilizadas:
• Booleano – verdadeiro ou Falso.
• Single – variável do tipo real de precisão simples.
• Double – variável do tipo real de precisão dupla.
• Currency – variável do tipo real de elevada precisão. Utilizado para moedas e
operações bancarias de alta precisão.
• Date – variável que armazena datas.
• String – variável que armazena cadeia de caracteres (alfanúmerico).
Programação em VBA - Estrutura Sequencial
31. 17/11/2016 31
Variáveis
As variáveis em VBA não têm de ser obrigatoriamente explicitadas, embora seja
conveniente fazê-lo, pois torna o código de execução mais rápida e mais explícito.
Para obrigar essa que a declaração seja feita, deve-se utilizar: Option Explicit.
Ex:
Option Explicit
(não permite que repita variáveis e declare as variáveis erradas)
Dim S As String, Nome As String
Dim Data_Dia As Date
Dim Botão As Object
Dim Número1 As Integer
Dim Propina As Boolean
Dim Qualquer_Coisa As Variant
Programação em VBA - Estrutura Sequencial
32. 17/11/2016 32
Declaração de constantes
É possível declarar constantes nos programas.
Const Pi As Double = valor
Por exemplo, imagine-se que se está a fazer um programa em que se recorre várias
vezes ao valor de Pi e que se necessita de alguma precisão nos cálculos a efetuar.
Para evitar ter de escrever o valor de Pi no programa, pode-se declarar a constante
“Pi” como tendo o valor 3.1415...
Programação em VBA - Estrutura Sequencial
Const Pi As Double = 3.1415926535897932384626433832795
Perímetro = 2 * Pi * Raio
Área = Pi * Raio * Raio
33. 17/11/2016 33
Comentário
Uma boa documentação de um programa, conforme, significa inserir comentários
apropriados no código de modo a explicar o que cada uma das funções que compõem o
programa faz. A documentação de uma função é um pequeno manual que dá instruções
precisas e completas sobre o uso da função.
Comentários são introduzidos em programas com o objetivo de documentá-los e de
incrementar a sua legibilidade. O programador é responsável por manter seus códigos
legíveis e bem documentados para que, no futuro, possa retomá-los e compreendê-los
sem muito esforço e sem desperdício de tempo. Na linguagem VBA padrão, os
comentários é envolvido pelo símbolo ‘. Um comentário é completamente ignorado
quando encontrado pelo compilador e, portanto, não faz diferença alguma no programa
executável resultante.
Programação em VBA - Estrutura Sequencial
34. 17/11/2016 34
Comentário
Exemplos:
• MsgBox “Olá Mundo" ‘ esse é o comando para escrever um dado em VBA.
• ‘ Este programa faz a adição de dois números inteiros fixos e mostra o resultado da
operação na saída.
TODO PROGRAMA DEVERÁ POSSUIR UM CABEÇALHO
‘Programa xxxx
‘Autor: Nome_do_Aluno
‘Data: 24/08/2016
Programação em VBA - Estrutura Sequencial
35. 17/11/2016 35
Entrada de valores em VBA – Função Ler.
A instrução Ler é utilizada quando deseja-se obter informações do teclado do
computador, ou seja, é um comando de entrada de dados. Para simplificar, usa-se a
instrução Ler, quando necessita-se que o usuário do algoritmo digite algum dado (para
posterior processamento ou tratamento da informação processada).
Utilizado para receber dados digitados pelo usuário.
Note que:
§ Mensagem – (obrigatório) , deve-se escrever a mensagem desejada em de forma
sucinta, ou seja, breve entre aspas.
§ o Título – (opcional) que aparece na barra superior azul da caixa;
Programação em VBA - Estrutura Sequencial
Variável = InputBox (“Mensagem ou Aviso”,”título”,” DefaultResponse” , “x pos” , ”y pos”)
36. 17/11/2016 36
Note que:
§ DefaultResponse – (opcional) String expressão exibida na caixa de texto sistema
autônomo a resposta padrão se for fornecida nenhuma outra entrada. Se você
omitir DefaultResponse, a caixa de texto exibido está vazia
§ Xpos – (opcional) expressão numérica que especifica, em twips, a distância da borda
esquerda da caixa de diálogo a partir da borda esquerda da tela. Se você
omitir XPos e YPos, a caixa de diálogo é centralizada na tela.
YPos – (opcional) expressão numérica que especifica, em twips, a distância da borda
superior da caixa de diálogo da parte superior da tela. Se você omitir XPos e YPos, a caixa
de diálogo é centralizada na tela.
Programação em VBA - Estrutura Sequencial
Variável = InputBox (“Mensagem ou Aviso”,”título”,” DefaultResponse” , “x pos” , ”y pos”)
37. 17/11/2016 37
Entrada de valores em VBA – Função Ler.
Programação em VBA - Estrutura Sequencial
Nome = InputBox(“Digite seu nome”, “Cadastro”, “Escreva Aqui”,”100”,”100”)
Mensagem Mensagem
DefaultResponse
Não obrigatório Xpos, Ypos
Não obrigatório
38. 17/11/2016 38
Entrada de valores em VBA – Função Ler.
Programação em VBA - Estrutura Sequencial
Exemplo
Sub Macro3()
Dim Nome As String
Nome = InputBox("Digite seu nome", "Cadastro", "Escreva Aqui", "100", "100")
MsgBox "O nome da pessoa é:" & Nome
End Sub
39. 17/11/2016 39
Exercício 03 - Faça um programa em fluxograma e em linguagem VBA para calcular o
perímetro e a área de uma circunferência e mostre o resultado da operação para o usuário
final. O exercício deve ser resolvido utilizando o comando InputBox e Msgbox.
Exercício 04 - Faça um programa em fluxograma e linguagem VBA para calcular a área e o
perímetro de um retângulo sendo dados os valores do comprimento e da largura. O
exercício deve ser resolvido utilizando o comando InputBox e Msgbox. Deve ser criado um
atalho para compilar a macro através de um botão.
Exercício 05 - Faça um programa em fluxograma e linguagem VBA para calcular a média
de duas notas e exiba o resultado dessa operação na tela do computador. O exercício deve
ser resolvido utilizando o comando InputBox e Msgbox.
Programação em C - Estrutura Sequencial
40. 17/11/2016 40
Exercício 05 –
Sub Exercicio03()
Dim raio As Single
Const Pi As Double = 3.14159
Dim Perimetro As Single
Dim area As Single
'Resolvendo o exercício usando o InputBox
raio = InputBox("Digite o raio", "Programa", "Escreva Aqui")
Perimetro = 2 * Pi * raio
area = Pi * raio * raio
MsgBox "O perímetro é " & Perimetro, "64", "Programa"
MsgBox "A area é " & area, "64", "Programa"
End Sub
Programação em C - Estrutura Sequencial
41. 17/11/2016 41
Entrada de valores em VBA – Função Ler.
Programação em VBA - Estrutura Sequencial
Para ler uma célula do excel e gravar o seu conteúdo em uma variável pode-se utilizar a função:
Preco = Range (A1)
Ou
Preco = Ceil (1,1)
Ou
Preco = ActiveSheet.Range("C1").Value
42. 17/11/2016 42
Entrada de valores em VBA – Função Ler.
Programação em VBA - Estrutura Sequencial
Sub Macro3()
Dim preco As Integer
Dim Nome As String
preco = Range("A1")
Nome = Cells(1, 3)
MsgBox "O conteúdo da celula A1 é?" & Nome1
MsgBox "O contéudo da celula 1,3?" & Nome1
End Sub
43. 17/11/2016 43
Entrada de valores em VBA – Função Ler.
Programação em VBA - Estrutura Sequencial
Para ler uma célula do excel e gravar o seu conteúdo em uma variável pode-se utilizar a
função:
Nome 1= Range (A1).value
Nome 1 = ActiveSheet.Range("C1").Value
Nome1 = Cells (A1).value
Para se referir a uma outra planilha
Dim Nome_2 As Integer
Nome 1= Worksheets("Plan3").Range("A1").Value
Isso é valido para a
planilha corrente ou ativa
44. 17/11/2016 44
Exercício 06 - Faça um programa em fluxograma e em linguagem VBA para calcular o
perímetro e a área de uma circunferência e mostre o resultado da operação para o usuário
final. O exercício deve ser resolvido de duas formas: utilizando o comando InputBox e
lendo o raio informado através de uma tabela do excel. Deve ser criado um atalho para
compilar a macro.
Exercício 07 - Faça um programa em fluxograma e linguagem VBA para calcular a área e o
perímetro de um retângulo sendo dados os valores do comprimento e da largura. O
exercício deve ser resolvido de duas formas: utilizando o comando InputBox e lendo o
comprimento e a largura informado através de uma tabela do excel. Deve ser criado um
atalho para compilar a macro.
Exercício 08 - Faça um programa em fluxograma e linguagem VBA para calcular a média
de duas notas de uma lista de alunos e exiba o resultado dessa operação na tela do
computador. Posteriormente é necessário informar se o aluno está aprovado ou
reprovado. Toda vez que a pessoa colocar uma nota superior a 10 deverá aparecer uma
mensagem de alerta. O exercício deve ser resolvido lendo os valores de uma tabela do
excel. Deve ser criado um botão para compilar a macro.
Programação em C - Estrutura Sequencial
45. 17/11/2016 45
Exercício 06 –
Sub Exercicio03()
Dim raio As Single
Const Pi As Double = 3.14159
Dim Perimetro As Single
Dim area As Single
'Resolvendo o exercício lendo e escrevendo uma célula do excel
raio = Range("B12")
'raio = Cells(12, 2)
Perimetro = 2 * Pi * raio
area = Pi * raio * raio
Cells(14, 2) = Perimetro
Range("B13") = area
End Sub
Programação em C - Estrutura Sequencial
46. 17/11/2016 46
Expressões Matemáticas , Operadores Aritméticos e Lógicos
Muitas vezes, ao desenvolvermos algoritmos, é comum utilizarmos expressões matemáticas
para a resolução de cálculos.
Utilizado para atribuir a variáveis:
- Valores pré-definidos
- Resultados de expressões
Representados pelo símbolo = (símbolo de uma atribuição).
• Significa que a variável do lado esquerdo receberá o resultado expresso no lado direito
• Sempre terminada com ponto e vírgula
Programação em C - Estrutura Sequencial
47. 17/11/2016 47
Operações matemáticas
Programação em VBA - Estrutura Sequencial
• Aritméticos: + (soma), - (subtração), / (divisão), * (multiplicação) , ^ (potência), e Mod
(resto inteiro).
• Concatenação: &.
• Lógicos: E [And], Não [Not], Ou [Or].
• Operadores Relacionais: =, <, <=, >, >= e <>.
• Atribuição:
Dim resto as integer resto = 120 – 49
Dim salario as double salario = 510.00
Dim cidade as string cidade = 'Blumenau'
48. 17/11/2016 48
Operações matemáticas
Programação em VBA - Estrutura Sequencial
• Funções Matemáticas:
Operação Exemplo Resultado
Raiz quadrada sqr(9.0) 3
Parte inteira int(7.8) 7
Valor absoluto abs(-5) 5
Seno sin(3.7) 0,53
Co-seno cos(4.1) 0,57
Tangente tan(6.8) 0,56
49. 17/11/2016 49
Exemplos de operações matemáticas:
Programação em VBA - Estrutura Sequencial
Algumas expressões aritméticas: 1+2, a-4.0, b*c, valor_1/taxa e num%2.
Exemplo: Expressões válidas
Expressão Valor
6.4 + 2.1 8.5
7 - 2 5
2.0 * 2.0 4.0
6 / 3 2
10 % 3 1
Uma restrição ao operador de divisão (/) é que o denominador deve ser diferente de zero.
Se alguma operação de divisão por zero for realizada ocorrerá um erro de execução do
programa (runtime error), o programa será abortado e a mensagem divide error será
exibida.
50. 17/11/2016 50
Operações matemáticas
Precedência nas operações matemáticas:
1º: funções matemáticas
2º: *, / e MOD
3º: + e –
4º: = <> > >= < <=
Precedência pode ser alterada com o uso de parênteses
O separador decimal é sempre o ponto (;)
Programação em VBA - Estrutura Sequencial
51. 17/11/2016 51
Operações matemáticas
Nas linguagens de programação e, portanto, nos exercícios de algoritmos que iremos
desenvolver, as expressões matemáticas sempre obedecem às regras matemáticas:
1) As expressões dentro de parênteses são sempre resolvidas antes das expressões fora
dos parênteses. Quando existem vários níveis de parênteses, ou seja, um parêntese
dentro de outro, a solução sempre inicia do parêntese mais interno até o mais
externo (de dentro para fora).
Ex: (2+1) + 3 Ex: 3*(4*(2+3))
Programação em VBA - Estrutura Sequencial
3 + 3 = 6
3*(4*5)
3*20 = 60
52. 17/11/2016 52
Atribuição de Valores
Nas linguagens de programação e, portanto, nos exercícios de algoritmos que iremos
desenvolver, as expressões matemáticas sempre obedecem às regras matemáticas:
2) Quando duas ou mais expressões tiverem a mesma prioridade, a solução é sempre
iniciada da expressão mais à esquerda até a mais à direita.
Ex. 2 + 3 + 5 = 5 + 5 = 10
Ex: (2+3) + 3+ (4+9) = 5 + 3 + 13 = 21
3) Para o desenvolvimento de algoritmos que possuam cálculos matemáticos, as
expressões aritméticas devem estar horizontalizadas, ou seja, linearizadas e também não
esquecendo de utilizar os operadores corretamente.
Programação em VBA - Estrutura Sequencial
M = (N1+N2) / 2
53. 17/11/2016 53
Expressão Valor Ordem
1 + 2 - 3 0 + -
24 - 3 * 5 9 * -
4 - 2 * 6 / 4 + 1 2 * / - +
6 / 2 + 11 % 3 * 4 11 / % * +
Precedência nas operações matemáticas:
Programação em VBA - Estrutura Sequencial
A ordem de precedência dos operadores pode ser quebrada usando-se parênteses: ( ). Os
parênteses são, na verdade, operadores de mais alta precedência e são executados
primeiro. Parênteses internos são executados primeiro que parênteses externos.
Expressão Valor Ordem
1 + (2 - 3) 0 - +
(24 - 3) * 5 105 - *
(4 - 2 * 6) / 4 + 1 -1 * - / +
6 / ((2 + 11) % 3) * 4 24 + % / *
54. 17/11/2016 54
Operadores Lógicos
Programação em VBA - Estrutura Sequencial
Os operadores lógicos servem para combinar resultados de expressões, retornando
se o resultado final é verdadeiro ou falso.
Os operadores lógicos são:
• E / AND Uma expressão AND (E) é verdadeira se todas as condições forem verdadeiras;
• OR/OU Uma expressão OR (OU) é verdadeira se pelo menos uma condição for verdadeira;
• NOT Um expressão NOT (NÃO) inverte o valor da expressão ou condição, se verdadeira
inverte para falsa e vice-versa.
55. 17/11/2016 55
Operadores Lógicos
Programação em C - Estrutura Sequencial
A tabela abaixo mostra todos os valores possíveis criados pelos três operadores lógicos
(AND, OR e NOT).
Ex.: Suponha que temos três variáveis A = 5, B = 8 e C =1
Expressões Resultado
A = B AND B > C
A < B OR B < C
A > B NOT
A < B AND B > C
A >= B OR B = C
A <= B NOT
Falso
Verdadeiro
Verdadeiro
Verdadeiro
Falso
Falso
Em VBA:
Operador and
Operador or
Operador not
56. 17/11/2016 56
Programação em C - Estrutura Sequencial
• Exercício 9
Faça um programa em fluxograma e linguagem VBA para calcular uma raiz quadrada e o
cubo. O exercício deve ser resolvido de duas formas: utilizando o comando InputBox e
lendo os valores de uma tabela do excel. Deve ser criado um botão para compilar a macro.
• Exercício 10
Faça um programa em fluxograma e linguagem VBA para calcular a solução de uma
equação do segundo grau. O exercício deve ser resolvido de duas formas: utilizando o
comando InputBox e lendo os valores de uma tabela do excel. Deve ser criado um botão
para compilar a macro.
• Exercício 11
Faça um programa em fluxograma e linguagem VBA para reajustar o salário de 50
funcionários de uma empresa. Para tal é necessário criar um critério de reajuste salarial.
Deve ser criado um botão para compilar a macro.
Notas do Editor
O VBA constitui uma ferramenta poderosa nas mãos de programadores experimentados
mas pode, ao mesmo tempo, ser muito útil a um utilizador normal, mesmo inexperiente.
De fato, no dia a dia da utilização destas aplicações, defrontamo-nos com a necessidade
de repetir a mesma tarefa várias vezes ao dia ou, de em certas ocasiões, ter que
repetir uma determinada tarefa uma série de vezes de seguida. Seja escrever ou formatar
um certo texto, seja executar uma série de comandos ou escolher opções de menus, seja
ainda realizar a formatação complexa de um documento, são inúmeras as ocasiões em
que dava jeito poder automatizar essas tarefas repetitivas. É aqui que entra o VBA, permitindo
a construção daquilo que se designa vulgarmente por macros.
O que é a Macro?
Uma macro contem uma lista das instruções a realizar para executar uma determinada
tarefa. No fundo, é um programa escrito em VBA, que indica a uma aplicação como o
Excel quais os passos a dar para atingir um objetivo específico. Pode-se dizer que um
macro não é mais que uma descrição formalizada das tarefas que se pretende automatizar.
Uma macro é um programa escrito em VBA, que indica a uma aplicação Office quais os passos
a dar para realizar uma dada tarefa.
• Um macro é uma descrição formalizada das ações que se pretende automatizar.
• As macros incluem instruções que interagem com elementos da aplicação.
Clicando em OK inicia-se o processo de gravação da macro, ou seja, todas as tarefas
que forem realizadas daqui para a frente vão ser convertidas automaticamente em
código Visual Basic.
O objetivo das macros é programar funções típicas do Microsoft Excel de forma a
facilitar a execução de tarefas repetitivas. A criação de uma Macro é semelhante à
gravação de uma cassete, inicia-se a gravação e realiza-se a tarefa pretendida que é
convertida automaticamente em código de Visual Basic (VB). A tarefa pode ser, por
exemplo, abrir um determinado ficheiro de resultados, escolher algumas colunas e
realizar um determinado tipo de gráfico. Com a utilização da macro podemos repetir
este conjunto de tarefas o número de vezes que for necessário poupando bastante tempo
no caso de estarmos a analisar uma grande quantidade de resultados.
Variáveis
A variáveis são posições na memória que o computador reserva para armazenar os dados
manipulados pelo programa. Estas posições devem ser reservadas (declaradas) no início do
programa, a partir daí ficam disponíveis para receberem qualquer conteúdo. Este conteúdo pode ser
alterado quando necessário (daí o nome variável, pois o conteúdo pode variar).
Durante a execução de algoritmos e programas podemos usar compartimentos de memória
para armazenamento de informações. Como valores podem ser atribuídos e sobrescritos nesses
compartimentos e, portanto, podem variar durante a execução do algoritmo ou programa,
esses compartimentos de memória são chamados de variáveis. Além disso, podemos atribuir
um nome simbólico a um endereço de um compartimento de memória. Esse nome simbólico é
conhecido como identificador ou nome da variável. O identificador de uma variável pode ser
escolhido pelo(a) desenvolvedor(a)/programador(a) de modo a refletir de alguma forma o seu
conteúdo. Nas aulas anteriores, temos usado diversas variáveis para armazenar valores que
são números inteiros, como num1 , soma e produto , por exemplo. Nos nossos programas,
podemos usar outros tipos de dados além de inteiros, como já mencionamos e veremos mais
adiante.
Mas, ao alterar o conteúdo da variável, a informação anterior é perdida, ou seja, sempre "vale" a última informação armazenada na variável. Uma variável armazena 'apenas' um conteúdo de cada vez.
Uma variável que conterá números fracionários, pode ser declarada com o tipo de dado Single, Double ou Currency.
Uma variável que contém valor lógico (verdadeiro ou falso) pode ser declarada com o tipo de dados Boolean.
Uma variável que contém uma referência a um objeto do MS Excel pode ser declarada com tipo de dados Object.
Uma variável Variant permite o armazenamento de qualquer tipo de dado.
Um passo importante na definição de variáveis é a opção “Option Explicit”. Este
comando deve ser sempre utilizado, principalmente quando os programas apresentam
uma complexidade grande, uma vez que obrigam a que não existam variáveis com a
mesma denominação e que todas as variáveis utilizadas sejam declaradas, isto é, seja
dito ao computador de que tipos são.
Option Explicit- Esta declaração explícita de variáveis previne igualmente erros ortográficos de programação, como no exemplo abaixo.
Ex.
Numero = 36
Raiz = Sqr(Numro)
Foi iniciada uma variável “Numero” com o valor de 36 e pretende-se saber a sua raiz
quadrada (utilizando a função “Sqr”, intrínseca do VBA, e que devolve a raiz quadrada
de um número). Mas por erro do programador, omitiu-se uma letra na chamada da
função “Sqr”, utilizando-se uma variável “Numro”. Neste caso, o valor de “Raiz” vai
ser igual a 0, uma vez que a variável “Numro” não foi inicializada, tendo sido assumido
que tinha o valor 0 (raiz quadrada de zero é igual a zero). O programa correu
perfeitamente sem devolver nenhuma mensagem de erro, uma vez que não foi feita
nenhuma operação ilegal, pois a opção de definição explícita de variáveis não foi
activada. No caso de ter sido activada, o programa não correria, avisando prontamente
que a variável “Numro” não tinha sido declarada, evitando-se assim erros deste tipo.
Expressão de controle indica que tipo de dados devem ser lidos na variável.
Expressão de controle indica que tipo de dados devem ser lidos na variável.
Expressão de controle indica que tipo de dados devem ser lidos na variável.
Expressão de controle indica que tipo de dados devem ser lidos na variável.
Expressão de controle indica que tipo de dados devem ser lidos na variável.
Expressão de controle indica que tipo de dados devem ser lidos na variável.
Expressão de controle indica que tipo de dados devem ser lidos na variável.
Multiplicação * r = n1 * n2
Divisão / r = n1 / n2
Adição + r = n1 + n2
Subtração – r = n1 – n2
Potenciação ^ r = b ^ e
Divisão (retorna o resto) Mod r = n1 Mod n2
Divisão (retorna o quoc. inteiro) \ r = n1 \ n2
Os operadores de multiplicação (*), divisão (/) e módulo (MOD) tem precedência sobre os operadores
de adição (+) e subtração (-). Entre operadores de mesma precedência as operações são efetuadas
da esquerda para a direita.
(%) chamado operador de módulo cujo significado é o resto da divisão inteira.
(--) Decremento
(++) Incremento
Observação:
a++ é similar a a = a + 1;
b-- é similar a b = b -1;
Funções trigonométricas do ângulo arco, em radianos:
sin(arco); // seno
cos(arco); // coseno
tan(arco); // tangente
asin(arco); // arco-seno
acos(arco); // arco-coseno
atan(arco); // arco-tangente
Funções diversas:
log(num); // Logaritmo natural (base e)
log10(num); // Logaritmo decimal (base 10)
pow(base, exp); // Potenciacao: pow(3.2,5.6)=3.25.6.
sqrt(num); // Raiz quadrada: sqrt(9.0)=3.0.
Funcoes de arredondamento:
ceil(num) ; // Exemplo: ceil(3.2) == 3.0;
floor(num) ; // Exemplo: floor(3.2) == 4.0;
Para utilizar uma destas funções introduza a linha de comando #include <math.h> no cabeçalho
de seu programa. A partir deste momento você poderá, dentro de qualquer rotina, utilizar qualquer
função da biblioteca math.h.