Buscar

Unidade 3 _ Programação de computadores

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 36 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Unidade 3 - Operadores, funções matemáticas e modularização 
OBJETIVOS DA UNIDADE 
• Compreender o conceito de operadores, tanto aritméticos quanto 
lógicos; 
• Conhecer as funções matemáticas de VBA; 
• Compreender o conceito de modularização. 
 
TÓPICOS DE ESTUDO 
Operadores lógicos e aritméticos 
// Operadores aritméticos 
// Operadores de comparação 
// Operadores lógicos 
 
Funções matemáticas 
 
Modularização 
// Criando suas próprias funções 
// Criando sua própria função e a invocando em uma célula do Excel 
// Modificadores de acessos público e privado 
 
Operadores lógicos e aritméticos 
Variáveis são usadas em quase todos os programas de computador, e o 
VBA (Visual Basic for Application) funciona da mesma maneira. A boa 
prática sugere que uma variável seja declarada no início do 
procedimento; isto não é obrigatório, mas ajuda na identificação da 
natureza do conteúdo (texto, dados, números, etc.), no entanto, uma 
variável armazena apenas valores. 
Uma das coisas mais interessantes e empolgantes de um VBA, ou de 
qualquer outra linguagem de programação, é a possibilidade de 
relacionar e correlacionar essas variáveis, realizando operações 
aritméticas e comparações lógicas. 
 
OPERADORES ARITMÉTICOS 
Em muitos momentos, será necessário realizar alguma operação 
aritmética, desde as mais simples, como a soma de algum valor, até a 
resolução de equações complexas. Para todos esses casos utilizaremos 
os operadores aritméticos, que são nativos da linguagem. 
Os operadores aritméticos do VBA são usados para executar operações 
aritméticas, tais como soma, subtração, divisão e multiplicação de 
números. A Tabela 1 mostra os operadores aritméticos disponíveis no 
VBA. 
 
 
Tabela 1. Operadores aritméticos. 
 
A Figura 1 apresenta um código que realiza cálculos de soma, subtração 
e multiplicação de números inteiros. Observe que, na linha 3, foram 
declaradas as variáveis que utilizamos em nosso código-fonte, e todas 
elas são do tipo inteiro. Caso fôssemos utilizar números reais, 
colocaríamos o tipo Double, por exemplo, e o resultado não se alteraria. 
 
 
Figura 1. Exemplo do uso de operadores aritméticos em VBA. 
 
Após atribuirmos valores para as variáveis num1 e num2, começamos a 
fazer as operações a partir da linha 8. No caso da adição, o valor presente 
em num1 é somado ao valor presente em num2 e o resultado é 
armazenado na variável soma. Em seguida, na linha 9, é apresentada 
uma MsgBox que expõe o resultado da soma. Lembrando que & (e 
comercial) junta o texto “O resultado da soma é:” com o conteúdo da 
variável soma que, nesse caso, é 13. 
A subtração e a multiplicação seguem a mesma lógica descrita 
anteriormente. Portanto, com o resultado da adição, teremos uma 
variável soma; com o resultado da subtração, uma variável chamada 
subtração; com o resultado da multiplicação, uma variável chamada 
multiplicação. Tais valores podem ser aproveitados a qualquer momento 
no seu código, pois ficam armazenados em variáveis separadas. 
Mas, supondo que o nosso objetivo seja apenas de apresentar os valores 
das operações (como é o caso da Figura 1), então poderíamos ter uma 
única variável chamada total, que receberia o valor da operação e 
mostraria, através do MsgBox, o resultado. Nesse caso, não 
guardaríamos os valores para futura utilização, conforme exemplifica a 
Figura 2. 
 
 
Figura 2. Utilização de apenas uma variável que recebe o total das operações. 
 
No código da Figura 2, o total obtido na linha 8 será apresentado na 
linha 9. Porém, na linha 11, o total (que era 13) será sobrescrito pelo 
valor da subtração, no caso, 7. O mesmo ocorre na linha 14, mas, nesse 
código, o objetivo não é armazenar o valor das operações para futuro 
uso, então isso não altera nada. 
O uso do operador aritmético de adição com números é trivial e fácil de 
entender. Entretanto, o que aconteceria com o código da Figura 3, que 
soma duas strings (palavras/frases)? 
 
 
Figura 3. Adição de Strings. 
 
A Figura 3 apresenta três variáveis do tipo string, são 
elas: valorX, valorY e resultado. As variáveis valorX e valorY recebem 
conteúdo do tipo texto e, em seguida, a variável resultado recebe 
a soma das Strings. Por fim, na linha 11, o resultado dessa soma é 
apresentado na tela. 
Quando realizamos a soma ou a adição de strings, o resultado final é a 
concatenação das duas strings. Na linha 11 da Figura 3 será 
apresentado: “Programação de Computadores”. 
ASSISTA 
Em relação à manipulação de string, realizar a adição é um processo 
válido. Entretanto, não se pode dizer o mesmo da subtração ou do uso 
dos demais operadores aritméticos. Caso você tente subtrair ou 
multiplicar duas cadeias de caracteres, será apresentada uma mensagem 
de erro. Para outras informações, assista ao vídeo Strings: conceito e 
utilização - Linguagem C. 
Até aqui, falamos dos operadores de adição, subtração e multiplicação. 
Agora, veremos o operador de divisão. Na Figura 4, utilizamos 4 tipos 
de operações diferentes: 
• Inteiro dividido por inteiro (linha 12); 
• Inteiro dividido por real (linha 13); 
• Real dividido por inteiro (linha 14); 
• Inteiro dividido por real (linha 15). 
Figura 4. Utilização do operador aritmético de divisão. 
Faça o teste e execute o código da Figura 4. Você verá que, nesse 
código, a saída das linhas de 12 a 15 serão números reais, tanto se 
houver divisão de inteiro por inteiro quanto de inteiro por real. 
Porém, se definirmos uma variável chamada total do tipo Integer, o 
resultado mudará. Faça o teste com o código da Figura 5. 
Figura 5. Operador aritmético de divisão. 
Na Figura 5, as saídas apresentadas entre as linhas 19 e 22 sempre serão 
do tipo inteiro. Isso ocorre devido à variável resultado ter sido 
declarada como inteira. Assim, é preciso pegar a parte inteira da divisão, 
independente de estarmos dividindo real por real, real por inteiro ou 
inteiro por real. 
Acima, foram analisadas as principais propriedades do operador 
aritmético de divisão. A seguir, veremos o operador aritmético de 
exponenciação, que possui um uso elementar. Se desejarmos realizar a 
operação 3² (três elevado ao quadrado), por exemplo, faremos assim: 3 
^ 2. Veja o código da Figura 6 e realize o teste em seu computador. 
 
 
Figura 6. Aplicação de exponenciação em VBA. 
A saída do código da Figura 6, na linha 9, será 3 elevado ao quadrado, 
ou seja, 9. Na exponenciação, o tipo de variável (inteiro ou real) não 
influenciará como no caso da divisão. 
A Figura 7 apresenta o operador de módulo, responsável por retornar 
o resto de uma divisão. 
Figura 7. Uso do operador aritmético de módulo. 
No exemplo da Figura 7, exploramos todos os tipos de divisões. Note 
que, em todos os casos, a saída é a mesma. 
 
 
 
 
A Tabela 2 apresenta os tipos e as saídas de operadores aritméticos. 
 
 
Tabela 2. Relação dos operadores aritméticos e as saídas obtidas (a variável R é do tipo 
inteiro). 
Note os possíveis tipos de saídas nos diversos relacionamentos entre os tipos de 
variáveis de entrada. 
Quando várias operações ocorrem em uma expressão, cada operação é realizada 
de modo independente e, posteriormente, o resultado é apresentado. Assim, uma 
operação como 8 · 4 + 2 será diferente de 8 · (4 + 2). O quadro 3 apresenta a 
ordem de precedência dos operadores. 
 
 
Quadro 3. Precedência de operadores. 
Considere, então, o código a seguir, responsável por calcular a média 
entre três valores. Na média, temos a soma dos valores e a divisão do 
resultado por três. A Figura 8 exemplifica o cálculo da média. 
 
 
Figura 8. Cálculo de média. 
 
Se você criar o código apresentado na Figura 8 em seu editor VBA e 
executá-lo, terá o resultado da média. Perceba que os valores de entrada 
são 5, 8 e 2. Ao somá-los e dividi-los por 3, obtemos o número 5 como 
resultado. No entanto, ao executar o código, aparecerá que a média 
calculada está incorreta.Porém, na realidade, está correta. O que pedimos para o computador 
fazer foi: dividir num3 por 3 e somar com num1 e num2. Lembre-se que, 
pelo quadro 3, a divisão é feita antes da soma. Nesse caso, como 
resolver? 
É simples. Vamos adicionar parênteses circundando a operação que 
desejamos que seja executada primeiro (Figura 9). Note que, sempre que 
desejamos realizar um cálculo antes do outro, nós o colocamos entre 
parênteses. 
 
 
 
Figura 9. Cálculo da média. 
 
Observe que, com o uso dos parênteses, primeiramente foi feita a soma 
dos três valores e, em seguida, o resultado foi dividido por 3, resultando 
no valor 5. Agora está efetivamente correto. 
A melhor forma de aprender é praticando. Sendo assim, teste todos os 
códigos apresentados aqui e explore as mais diversas formas de 
relacionamento. Pense, por exemplo, em um problema que envolva pelo 
menos duas operações aritméticas, como no caso do cálculo da média. 
 
OPERADORES DE COMPARAÇÃO 
 
Se os operadores aritméticos manipulam os valores das variáveis, 
alterando-as, os operadores de comparação relacionam uma variável 
com outra. Em VBA, existem seis diferentes tipos de operadores de 
comparação, expostos na Tabela 3. Considere que, nesta tabela, A 
corresponde a 10, e B corresponde a 20. 
 
 
Tabela 3. Operadores de comparação. 
 
O resultado obtido em toda a operação de comparação será do tipo 
booleano, ou seja, retornará true ou false. Veja o exemplo de um 
código que compara os valores de A e B e, em seguida, mostra o 
resultado na tela (Figura 10). 
 
 
Figura 10. Código de exemplo de uso de comparação. 
 
Neste código, é realizada a comparação na linha 8 e, em seguida, o 
resultado é armazenado na variável teste. Posteriormente, o resultado é 
apresentado na linha 10, em uma MsgBox. 
Podemos correlacionar os operadores de comparação com os 
operadores aritméticos, conforme mostra o exemplo a seguir: 
 
 
Exemplo: 
É sabido que, para ser par, um número precisa ser divisível por dois. Para 
verificarmos se um número é divisível por 2, temos que utilizar o módulo e, se 
o resto da divisão for igual a zero, então o número é divisível por 2. Logo, se é 
divisível por dois, também é par. Então, no código apresentado na Figura 11, 
nós criamos um algoritmo que verifica se o número é par, retornando um valor 
verdadeiro quando for, e falso quando não for. 
 
Figura 11. Código para verificar se um número é par. 
 
O código da Figura 11 é bem diferente daquilo que vimos até aqui. Na 
linha 5, a variável valor recebe o número 8, que verificaremos se é par 
ou não. Na linha 7, temos os seguintes detalhes a serem observados: 
 
O primeiro sinal de igual que aparece não está realizando comparação. 
Na realidade, é um sinal de atribuição de valores, ou seja, o resultado 
da operação realizada à direita será armazenado na variável teste; 
O segundo sinal de igual é de comparação entre valores, isto é, 
compara o elemento da esquerda com o da direita. 
 
No código da Figura 11, é verificado se o conteúdo de valorX possui 
módulo (resto de divisão) igual a 2. Caso positivo, o verdadeiro retorna, 
indicando que o número é par. Nesse caso, o resultado da 
Comparação é verdadeiro. 
 
Quando temos uma comparação, independentemente do tipo, 
chamamos de expressão. A seguir, apresentamos alguns exemplos de 
expressões: 
 
• A > B 
• A < B 
• A >= B 
• A <> B 
Essas operações são expressões comparativas, que podem ser utilizadas 
em diversos momentos, em um código fonte. 
OPERADORES LÓGICOS 
Os operadores lógicos, diferentemente dos operadores de comparação 
e de operações aritméticas, não manipulam as variáveis e seus valores, 
mas as expressões de comparação. 
No código da Figura 11, verificamos se o número 8 é par. Agora, 
considere que quiséssemos verificar se o número 8 é par e maior do que 
2. Também poderíamos verificar se o número 8 é par ou maior do que 
2. Para correlacionar expressões (número par e maior do que 2; número 
par ou maior do que 2), utilizaremos os conectivos lógicos. Existem 4 
operadores ou conectivos lógicos; veja, a seguir, uma análise sobre cada 
um deles (considere que a variável A corresponde a 0, e a B corresponde 
a 20). 
 
 
Tabela 4. Operadores lógicos 
 
Podemos representar cada um dos operadores lógicos em tabela 
verdade. Vejamos, então, a tabela verdade para cada um dos 
operadores lógicos e uma breve descrição. Considere que a variável A 
possui o valor 30 e a variável B possui o valor 20. 
 
// Operador Lógico AND (E) 
 
Vamos supor que temos duas comparações P e Q, e também uma saída 
S qualquer. Vamos supor, também, que as comparações P e Q estão 
conectadas por um operador lógico AND. A tabela verdade para essa 
relação pode ser observada na Tabela 5. 
 
 
Tabela 5. Tabela verdade para o operador lógico AND. 
 
Veja que, pela Tabela 5, a única possibilidade de a relação lógica AND 
ser verdadeira é quando a comparação em P e em Q são verdadeiras. 
Veja os exemplos a seguir: 
A > B AND B = 5 
 
A variável A realmente é maior do que B (verdadeiro), porém, a variável 
B não é igual a 5 (falso). Verdadeiro e falso, segundo a tabela verdade, 
nos retorna falso. Portanto, essa relação terá resultado falso; 
 
A <> B AND A > B 
 
A variável A é diferente da variável B (verdadeiro), e a variável A é maior 
que a variável B (verdadeiro). Como temos verdadeiro e verdadeiro, 
então, essa relação terá resultado verdadeiro. 
 
Desse modo, a única possibilidade de se ter verdadeiro, em uma relação 
que utiliza o operador lógico AND, é quando todas as comparações são 
verdadeiras. 
 
// Operador Lógico OR (OU) 
 
Vamos supor que temos duas comparações P e Q, e também uma saída 
S qualquer. Vamos supor, também, que as comparações P e Q estão 
conectadas por um operador lógico OR. A tabela verdade para essa 
relação pode ser observada na Tabela 6. 
 
 
Tabela 6. Tabela verdade para o operador lógico OR. 
 
Veja que, pela Tabela 6, a única possibilidade de a relação lógica OR ser 
falsa é quando a comparação em P e em Q são falsas. Veja os seguintes 
exemplos: 
 
 
 
A > B OR B = 5 
 
A variável A é realmente maior do que B (verdadeiro), porém, a variável 
B não é igual a 5 (falso). Verdadeiro e falso, segundo a tabela verdade, 
nos retorna verdadeiro. Portanto, essa relação terá resultado verdadeiro; 
 
A = B OR A = 50 
 
A variável A não é igual a variável B (falso), a variável A não é igual a 50 
(falso). Como temos falso e falso, então, trata-se de uma relação com 
resultado falso. 
 
Desse modo, a única possibilidade de se ter falso, em uma relação que 
utiliza o operador lógico OR, é quando todas as comparações são falsas. 
 
// Operador Lógico XOR (OU exclusivo) 
 
Vamos supor que temos duas comparações, P e Q, e também uma saída 
S qualquer. Vamos supor, também, que as comparações P e Q estão 
conectadas por um operador lógico XOR. A tabela verdade para essa 
relação pode ser observada na Tabela 7. 
 
 
Tabela 8. Tabela verdade para o operador lógico XOR 
 
Veja que, pela Tabela 7, somente serão verdadeiras as relações entre as 
comparações quando a comparação P e a comparação Q derem saídas 
opostas, ou seja, quando P for verdadeiro e Q for falso, ou vice-versa. 
Veja os exemplos a seguir: 
 
A > B XOR B = 5 
A variável A é realmente maior do que B (verdadeiro), porém, a variável 
B não é igual a 5 (falso). Verdadeiro e falso, segundo a tabela verdade, 
nos retorna verdadeiro. Portanto, essa relação terá resultado verdadeiro; 
 
A = 30 XOR B = 20 
 
A variável A é igual a B (verdadeiro), a variável B é igual a B (verdadeiro). 
Como temos verdadeiro e verdadeiro, então, essa relação terá resultado 
falso. Note que, se fosse a tabela verdade OR, essa relação resultaria 
verdadeiro. Porém, como é OR exclusivo, então a saída é falsa. 
 
Desse modo, a única possibilidade de se ter falso, em uma relação que 
utiliza o operador lógicoXOR, é quando todas as comparações são 
verdadeiras ou todas são falsas. 
 
CURIOSIDADE 
 
O operador lógico XOR, como o próprio nome já o define, trata-se de 
um OU (OR) Exclusivo. Compare a tabela verdade tanto do OR quanto 
de XOR e você verá que, na tabela verdade do XOR, a relação entre as 
expressões só será considerada verdadeira se, e somente se, ocorrer um 
OR. Porém, só ocorre OR quando dois valores são diferentes e, por isso, 
chamamos de OU Exclusivo ou XOR. 
 
// Operador Lógico NOT (Negação) 
 
Esse operador inverte a saída lógica de uma comparação. Por exemplo, 
se A > B for verdadeiro, ao fazermos NOT (A > B), o resultado será falso. 
Veja a tabela verdade na Tabela 8. 
 
 
Tabela 9. Operador lógico NOT 
 
Desse modo, o operador lógico NOT é responsável por inverter a saída 
da relação lógica entre duas expressões. 
O código da Figura 12 apresenta a utilização dos operadores lógicos. 
Analise o código e o implemente para testar. 
 
 
Figura 12. Utilização dos operadores lógicos. 
 
Na Figura 12, utilizamos os operadores lógicos. Note que todas as 
comparações ficaram entre parênteses; isto é recomendado para que se 
mantenha o código organizado e de fácil interpretação, tanto para quem 
o desenvolve quanto para quem o lê. 
Conforme dito anteriormente, é muito importante que você pratique. 
Por isso, sugerimos que você implemente os códigos, mudando os 
valores dos operadores lógicos e dos operadores de comparação. 
 
 
Testando seu conhecimento. VAMOS REFORÇAR O QUE APRENDEMOS 
ATÉ AGORA? 
 
Qual das alternativas a seguir apresenta, respectivamente, um 
operador lógico e um operador aritmético em VBA? 
 
Resposta = Exponenciação e XOR. 
 
Funções matemáticas 
 
O VBA nos permite utilizar funções pré-programadas, que possibilitam 
o cálculo de operações complexas de aritméticas e de matemática. A 
seguir, serão apresentadas as principais funções matemáticas de VBA. 
 
VBA Abs 
A função VBA Abs retorna um valor absoluto de um número. 
• Sintaxe: Abs(número); 
• Parâmetro: Um número cujo valor absoluto será calculado; 
• Retorno: Retorna um valor numérico; 
• Exemplo em VBA: Número = Abs(-320). 
VBA Atn 
A função VBA Atn retorna o arco tangente de um número em radianos, 
não em graus. 
• Sintaxe: Atn(número); 
• Parâmetro: Um número que será usado para calcular o arco 
tangente; 
Retorno: Retorna um valor numérico em radianos; 
• Exemplo em VBA: Número = Atn(210). 
VBA Cos 
A função VBA Cos retorna o valor do cosseno de um ângulo em 
radianos. 
• Sintaxe: Cos(número); 
• Parâmetro: Um número que será usado para calcular o cosseno; 
• Retorno: Retorna um valor numérico em radianos; 
• Exemplo em VBA: Número = Cos(210). 
 
 
VBA Exp 
A função VBA Exp retorna um valor exponencial para um número 
especificado. 
• Sintaxe: Exp(número); 
• Parâmetro: Um número que será usado para calcular o exponencial; 
• Retorno: Retorna um valor numérico; 
• Exemplo em VBA: Número = Exp(3) ⇒ saída 20.08553692. 
VBA Fix 
A função VBA Fix retorna a parte inteira de um número. 
• Sintaxe: Fix(expressão_numérica); 
• Parâmetro: Um número ou expressão numérica; 
• Retorno: Retorna um valor numérico; 
• Exemplo em VBA: Número = Fix(210.68) ⇒ saída 210. 
VBA FormatNumber 
A função VBA FormatNumber converte a expressão especificada como 
número formatado. 
• Sintaxe: FormatNumber(expressão_numérica, [formato]); 
• O formato é opcional, e você pode definir seu próprio formato ou 
escolher um dos predefinidos pelo Excel, como moeda, porcento, 
científico, entre outros. 
• Parâmetro: Um número ou expressão numérica e um formato 
(opcional); 
• Retorno: Retorna um valor numérico; 
• Exemplo em VBA: Número = FormatNumber(0.98, “Percent”) ⇒ saída 
98%. 
VBA Int 
A função VBA Int retorna a parte inteira de um número, arredondando-
o para baixo quando necessário. 
• Sintaxe: Int(expressão_numérica); 
• Parâmetro: Um número ou expressão numérica; 
• Retorno: Retorna um valor inteiro; 
• Exemplo em VBA: Número = Int(255.38,”Percent”) ⇒ saída 255. 
VBA Log 
A função VBA Log retorna o logaritmo natural de um número. 
• Sintaxe: Log(número); 
• Parâmetro: Um número do qual será obtido o seu log; 
• Retorno: Retorna um valor numérico; 
• Exemplo em VBA: Número = Log(20) ⇒ saída 2.995732274. 
VBA Randomize 
A função VBA Randomize altera o valor de semente, usado pelo 
gerador de números aleatórios da função RND. 
• Sintaxe: Randomize ([semente]); 
• Parâmetro: Semente numérica que será usada pela função RND. 
Trata-se de um valor opcional e, caso não seja usado, o Excel utilizará 
o timer do sistema como valor padrão; 
• Retorno: Não há retorno de valor, há início da função RND; 
• Exemplo em VBA: Será visto na próxima função (RND). 
VBA Rnd 
A função VBA Rnd retorna um número aleatório entre 0 e 1. 
• Sintaxe: Rnd([número]); 
• Parâmetro: Especifica qual número aleatório deve ser retornado, valor 
opcional; 
• Retorno: Retorna um número aleatório maior ou igual a 0 e menor 
que 1. 
Intervalo aleatório: Vamos supor que você deseja gerar um número 
aleatório entre dois valores (intervalo), para isso, você precisa utilizar a 
seguinte fórmula: 
Int ((maior_valor – menor_valor + 1) * Rnd + lowerbound) 
Supondo, então, que desejamos o número aleatório entre 10 e 20, 
teremos: 
Int ((20 – 10 + 1) * Rnd + 10). 
• Exemplo em VBA: 
Randomize número = Int ((30 - 20 + 1) * Rnd + 200) è retornará um 
número aleatório entre 20 e 30. 
 
VBA Round 
A função VBA Round arredonda um número para uma quantidade 
especifica de dígitos decimais. 
• Sintaxe: Round(expressão_numérica, [casas_decimais]); 
• Parâmetro: Expressão numérica que precisa ser arredondada. O 
parâmetro [casas_decimais] é opcional. Caso não seja informado, a 
função retornará um número inteiro; 
• Retorno: Retorna um valor numérico; 
• Exemplo em VBA: Número = Round(210.67, 1) ⇒ saída 210.6. 
VBA Sin 
A função VBA Sin retorna o valor senoidal de um ângulo em radianos. 
• Sintaxe: Sin(número); 
• Parâmetro: Valor numérico para calcular o seno de um ângulo; 
• Retorno: Retorna um valor numérico; 
• Exemplo em VBA: Número = Sin(2) ⇒ saída 0.909297427. 
VBA Sqr 
A função VBA Sqr retorna a raiz quadrada de um número. 
• Sintaxe: Sqr(número); 
• Parâmetro: Valor numérico positivo para calcular a raiz quadrada de 
um número; 
• Retorno: Retorna um valor numérico; 
• Exemplo em VBA: Número = Sqr(900) ⇒ saída 30. 
VBA Tan 
A função VBA Tan retorna o valor tangente de um ângulo. 
• Sintaxe: Tan(número); 
• Parâmetro: Valor numérico para calcular a tangente de um ângulo; 
• Retorno: Retorna um valor numérico; 
• Exemplo em VBA: Número = Tan(2) ⇒ saída -2.185039863. 
Todas as funções matemáticas apresentadas (bem como outras menos 
utilizadas e que não foram citadas) podem ser utilizadas em conjuntos, 
acompanhadas dos operadores lógicos e aritméticos vistos 
anteriormente. 
CURIOSIDADE 
No decorrer da unidade, selecionamos as principais funções 
matemáticas, utilizadas com mais frequência. Entretanto, a lista de 
funções é um pouco maior. Para conhecer cada uma das funções e 
também se aprofundar em suas especificidades, acesse o site oficial da 
Microsoft, presente nas referências bibliográficas. 
Vamos criar, por exemplo, um programa em VBA que, dados os valores 
de a, b e c, calcule as raízes de uma equação de segundo grau. 
Lembre-se de que equações de segundo grau são resolvidas 
aplicando-se a fórmula de Bháskara: 
 
 
Sabendo que delta é igual a b² - 4 · a · c, vamos criar um programa para 
encontrar as raízes da equação de segundo grau x² + 4x – 5. 
Primeiramente, calcularemos o delta e, na sequência, encontraremos os 
valores de x. O código da Figura 13 nos apresenta a solução. 
 
 
Figura 13. Cálculos de uma equação de segundo grau. 
 
No código da Figura 13, na linha 6, utilizamos o operador ^ para elevar 
ao quadrado o valor do número 4 (b²). Além disso, utilizamos a funçãomatemática Sqr (nas linhas 8 e 10) para encontrarmos a raiz quadrada 
de delta. Analise o código com atenção e veja que, para garantir as 
precedências dos cálculos, utilizamos parênteses para separar as 
operações. 
Agora, desejamos analisar se o valor de x1 e x2 são positivos. Como 
devemos proceder? Simples, vamos pegar o valor dessas variáveis e 
verificar se são maiores que zero. Veja o código na Figura 14. 
 
 
Figura 14. Complemento do código da equação de segundo grau. 
 
Observe, com a ajuda do código da Figura 14, algumas alterações. 
Criamos uma variável chamada maior_que_zero na linha 14, a qual 
recebe o resultado da comparação x1 > 0. Caso seja verdadeiro, a 
variável maior_que_zero receberá o valor “verdadeiro”, caso contrário, 
receberá “falso”. Em seguida, na linha 15, nós expomos uma frase que 
indica se é verdadeiro ou não que X1 é maior que zero. O mesmo 
acontece nas linhas 17 e 18, porém, para X2. 
Novamente, realize testes sobre os códigos descritos, troque valores, 
explore ao máximo. A única forma de se tornar fluente em programação 
é treinando. 
 
VAMOS REFORÇAR O QUE APRENDEMOS ATÉ AGORA? 
 
Relacione as técnicas de gerenciamento de memória disponíveis a 
seguir a suas definições: 
 
Randomize = Altera o valor de semente usado pelo gerador de números aleatórios. 
Fix = Retorna a parte inteira de um número. 
Round = Arredonda um número para uma quantidade específica de dígitos decimais. 
 
Modularização 
 
O código VBA é digitado e exibido no Editor do VBA, denominado 
módulo. Uma coleção de módulos é o que chamamos de projeto. 
Quando visualizado, um módulo VBA aparecerá em sua própria janela 
no Editor VBA. 
 
Pense nos módulos como pastas organizacionais para o seu código; 
adicione módulos VBA a um projeto, conforme necessário, para 
organizar e executar o código. 
 
Os módulos são compostos de blocos de construção elementares, 
os chamados procedimentos. Estes, por sua vez, são utilizados para 
organizar e executar seu código em um módulo. Ao digitar 
comandos, variáveis, matrizes, loops, lógicas, funções do Excel, 
entre outros, nos procedimentos do módulo VBA, você executa o 
procedimento de controle do Microsoft Excel e várias outras tarefas. 
 
A modularização pode ser entendida como uma prática de dividir o seu 
código em partes menores e funcionais de modo que elas se relacionem 
entre si, a fim de realizar uma ação específica. 
Vamos analisar o código da Figura 14. As instruções são executadas linha 
por linha, de modo sequencial; é o que chamamos de paradigma 
imperativo. 
Suponhamos que, após a linha 18, surja a necessidade de calcularmos a 
equação de segundo grau x² + 6x - 3. Nesse caso, temos que reescrever 
todo o trecho das linhas 2 a 18. E se tivermos de repetir esse cálculo por 
mais dez ou vinte vezes? Vamos chamar, novamente, as linhas que vão 
de 2 até a 18 todas essas vezes? 
A resposta é não, e, pensando nisso, temos o conceito de modularização, 
com o qual se criam funções que desempenham ações específicas: há 
uma função capaz de calcular o delta; outra capaz de calcular os valores 
de X1 e X2; outra capaz de mostrar os valores na tela. Veremos este 
código após a análise do conceito de funções. 
 
CRIANDO SUAS PRÓPRIAS FUNÇÕES 
Anteriormente, listamos as principais e mais utilizadas funções 
matemáticas do VBA. Além delas, você também pode criar suas próprias 
funções. 
Uma função é um conjunto de códigos agrupados em um único escopo, 
com o objetivo de realizar uma ação específica. As funções são usadas, 
principalmente, para executar tarefas repetitivas, como formatar dados 
para saída, executar cálculos etc. 
Vamos supor que você está desenvolvendo um programa que realiza o 
cálculo da área de um ambiente, por exemplo. Como parâmetro, você 
pode criar uma função que aceita os valores de medidas, tal função 
realizará o cálculo e retornará o valor da área. 
Os nomes das funções seguem as mesmas regras para nomear sub-
rotinas (Sub) e para nomear variáveis. Veja um exemplo de função na 
Figura 15: 
 
 
Figura 15. Exemplo de função. 
Na Figura 15, temos uma função chamada calculo_soma. Ela recebe 
dois parâmetros: um chamado argumentosA, e outro, argumentosB, 
ambos pertencentes ao tipo inteiro. Note que poderíamos ter mais de 
um parâmetro, de diferentes tipos. 
Essa função realizará, por parâmetro, a soma dos valores recebidos e a 
armazenará na variável de mesmo nome, calculo_soma. É importante 
notar que os valores podem ser retornados com o próprio nome da 
função. 
Além disso, a função pode ser chamada dentro de outra ou dentro de 
uma Sub. Para fins de teste, vamos criar uma sub-rotina e invocar tal 
função. Veja a Figura 16. 
 
 
Figura 16. Declaração, desenvolvimento e uso da função calculo_soma. 
Essa imagem foi capturada diretamente do editor VBA. Note que, ao 
criarmos uma função abaixo da sub-rotina, foi criada uma linha que a 
separa, a fim de que o código fique organizado. 
Observe que o código interno da função é executado somente quando 
chamado em calculo_soma(2, 3). O valor do cálculo é devolvido para a 
variável total e apresentado na tela. 
Toda função será definida como Function e terá seu escopo (espaço do 
código) encerrado com End Function. Veja mais um exemplo de função, 
responsável por calcular a área da circunferência (a área é igual a PI x 
raio²). O código desta função e de sua chamada na sub-rotina se 
encontra na Figura 17. 
 
 
Figura 17. Função para calcular área 
 
Nessa função, recebemos como parâmetro uma variável que se chama 
raio, pertencente ao tipo Double. Realizamos, então, o cálculo da área 
na linha 10, multiplicando o valor de PI pelo valor de raio vezes raio. 
O código da Figura 17 pode ser melhorado. Note que, para elevar o 
valor da variável raio ao quadrado, multiplicamos raio por raio. 
Entretanto, imagina: se estivéssemos elevando o raio a 100, teríamos de 
multiplicar raio vezes raio, cem vezes? Isso não seria prático, portanto, 
podemos melhorar a linha 10, utilizando o operador aritmético de 
exponenciação ^. 
 
Outra mudança que podemos fazer é na declaração da variável PI. 
O valor de PI é fixo, independente do qual seja o programa, PI 
sempre valerá 3.1415. Trata-se, portanto, de uma constante, então, 
vamos declarar PI como constante. 
 
A Figura 18 apresenta as mudanças realizadas no código. 
 
 
Figura 18. Cálculo da área da circunferência. 
 
Agora, o cálculo da função ficou mais funcional e elegante. Apesar de 
não ser o caso, se precisássemos elevar o raio a 100, trocaríamos, então, 
o 2 da linha 11 por 100, sendo mais simples do que multiplicar raio vezes 
raio cem vezes. 
Note, também, que criamos uma constante chamada PI. Por ser 
constante, o valor desta não poderá ser alterado durante a execução do 
código. 
Devemos pensar em nosso programa de forma modular, como se 
fossem blocos de um quebra cabeça, que devem ser unidos de alguma 
forma, a fim de resolver um problema. 
Por exemplo, imagine uma colmeia. Cada abelha possui uma função 
específica: a rainha tem a função de produzir os ovos e de manter a 
ordem “social” na colmeia; as operárias realizam o trabalho duro, que 
inclui juntar ao parágrafo anterior limpar colmeia, proteger as outras 
abelhas, sobretudo a rainha; irmãs e mãe; o macho, o zangão, possui a 
função de fecundar a rainha. 
 
Considerando que essa organização garante a manutenção da 
colmeia, o mesmo se pode dizer sobre a modularização: cada função 
realiza uma determinada e específica ação. Desse modo, as funções, 
assim como abelhas, se juntam para um bem específico: resolver um 
determinado problema. 
 
Voltemos ao código da Figura 14, que trata do cálculo da equação de 
segundo grau. Vamos melhorá-la, adicionando, e propondo, assim, o 
conceito de modularização. Primeiramente, vamos transformar a linha 6, 
referente ao cálculo de delta, em uma função chamada calc_delta, 
passando comoparâmetro os valores de a, b e c. A Figura 19 apresenta 
um exemplo da função calc_delta. 
 
 
Figura 19. Função para calcular o delta. 
 
Essa função receberá três valores por parâmetros e realizará o cálculo de 
delta. Agora, precisamos criar uma função que receba tanto o valor 
calculado de delta quanto os valores de a e b, para calcular os valores 
de x1 e x2. Vejamos a função calc_x1 e calc_x2, a seguir, na Figura 20. 
 
 
Figura 20. Funções para calcular x1 e x2. 
As funções calc_x1 e calc_x2 foram criadas separadamente para fins 
didáticos. Você poderá criar de uma outra forma, lembrando que o 
conteúdo da função é definido por você, desde que respeite a lógica, 
que é calcular o valor para x. 
Ambas as funções recebem os valores de delta, a e b, para realizarem o 
cálculo e, posteriormente, realizarem o retorno. Observe que elas 
utilizam a função matemática pronta Sqr para calcular a raiz quadrada 
de delta. 
Agora, nos falta a função responsável por mostrar os resultados de 
delta, x1 e x2 na tela. Deste modo, criaremos a função chamada 
mostrar_resultados, que recebe, por parâmetro, os valores de 
delta, x1 e x2. Veja o código da função na Figura 21. 
 
 
Figura 21. Função responsável por mostrar os resultados na tela. 
 
Essa função recebe os valores por parâmetro e os apresenta na tela para 
o usuário. Por fim, precisamos invocar tais funções em nosso código 
principal, na sub-rotina. Veja como é simples: basta chamarmos as 
funções na ordem correta e, em seguida, passarmos os valores por 
parâmetro. A Figura 22 apresenta o código principal. 
 
 
Figura 22. Sub-rotina invocando as funções para o cálculo da equação de segundo grau. 
Se você comparar o código da Figura 22 e o código da Figura 14, verá 
que a sequência de ações é a mesma. A diferença, agora, é que o nosso 
código se ramificou; na Figura 22, ao chegar na linha 6, é invocada a 
função para calcular o delta, então, são enviados três valores (são três 
valores, pois a função foi definida anteriormente assim). 
Aqui, é como se o código saísse dessa sequência e fosse para um outro 
local da memória, para realizar a operação de cálculo e, assim que 
terminar, voltar a executar a linha 6. 
Assim que termina, a função calc_delta retorna o valor encontrado e 
armazena na variável delta. O código prossegue em execução. 
 
Na linha 8, há um novo desvio. O código que estava “descendo” na 
execução de comando, após comando, encontra a função calc_x1. Para 
ela, são enviados três valores, conforme já havia sido definido 
anteriormente. Essa função calcula o valor para x1 e, em seguida, 
devolve para armazenarmos na variável de mesmo nome x1. 
 
O código volta a executar na sub-rotina e, agora, a linha 10 será a 
próxima a ser processada. São repetidos os comandos da linha anterior 
e, por fim, ao voltar para a sub-rotina, ocorre, na linha 12, a invocação 
da função mostrar_resultados. Essa função recebe três valores e os 
apresenta na tela, concluindo a execução do código. 
 
CRIANDO SUA PRÓPRIA FUNÇÃO E A INVOCANDO 
EM UMA CÉLULA DO EXCEL 
 
Agora, veremos como criar uma função e utilizá-la no Excel. Considere que 
você precise, todos os dias, realizar os cálculos de potência, tensão e 
corrente e, todos os dias, precisa digitar os valores e realizar as 
multiplicações e divisões inerentes a esses cálculos. 
Então, considere que você pode ter uma função matemática no Excel, 
que, se você passar por parâmetro a tensão (V) e a corrente (I), essa 
função te retornará à potência. Não seria mais prático do que ficar 
fazendo uma série de cálculos? São cálculos simples e rápidos, porém, 
se você os economizar, certamente, terá mais tempo para outras coisas 
importantes. 
Agora, vamos criar um novo módulo no nosso VBA. Para isso, no editor 
VBA, clique com o botão direito sobre o diretório “VBAProjects” e, em 
seguida, clique em INSERIR >> MÓDULO. 
Criaremos três funções: uma para calcular a potência a partir da tensão 
e da corrente; outra para calcularmos a tensão a partir da potência e da 
corrente; e, por fim, uma para calcular a corrente a partir da tensão e da 
potência. As fórmulas são dadas a seguir: 
 
P = V · I 
V = P/I 
I = P/V 
 
Em que P é potência, V é tensão e I é corrente. 
Vamos, então, montar as nossas funções no VBA. A Figura 23 apresenta 
como elas ficaram. 
 
 
Figura 23. Funções para uso nas células do Excel. 
 
As funções estão prontas, então, precisamos invocá-las no Excel. Do 
mesmo modo que invocamos as principais funções, também 
invocaremos as três que nós criamos. A Figura 24 apresenta uma 
sugestão de organização da tabela do Excel. 
 
 
Figura 24. Estrutura das células no Excel. 
 
Observe que a Figura 24 apresenta três espaços em cinza mais escuro; 
nele ficará a nossa resposta. Vale ressaltar que as cores foram escolhidas 
para fins didáticos e que não possuem influência. 
No primeiro conjunto, temos os valores para a tensão e para a corrente, 
logo, calcularemos a potência. No segundo conjunto, temos os valores 
da tensão e da potência, logo, calcularemos a corrente. Por fim, no 
terceiro conjunto, teremos que calcular a tensão a partir dos valores 
dados de corrente e potência. 
 
Então, para o primeiro conjunto, clique na célula cinza, 
digite =calc_potencia(C2;C3) e pressione Enter. Assim, passaremos 
dois valores por parâmetro para a função calc_potencia. 
 
Para o segundo conjunto, clique na célula cinza, 
digite =calc_corrente(F4;F2) e pressione Enter. Assim, passaremos dois 
valores por parâmetro para a função calc_corrente. 
 
Para o terceiro e último conjunto, clique na célula cinza, 
digite =calc_tensao(I4;I3) e pressione Enter. Assim, passaremos dois 
valores por parâmetro para a função calc_tensao. 
 
Lembre-se que a planilha do Excel possibilita a invocação e a criação de 
todos os tipos de função e de cálculos matemáticos. 
 
MODIFICADORES DE ACESSOS PÚBLICO E 
PRIVADO 
 
Os termos público e privado são usados em relação aos módulos. O 
conceito básico é de que variáveis, Subs ou funções públicas podem ser 
vistas e usadas por todos os módulos da pasta de trabalho e, enquanto 
variáveis, Subs e funções privadas podem ser usadas apenas por código 
dentro do mesmo módulo. 
 
// Subprocedimentos (Sub) 
 
Ao pensar sobre a diferença entre Subs públicas e privadas, as duas 
principais perguntas a serem feitas são: 
 
1. O código aparece na lista de macros disponíveis na janela Macro 
do Excel? 
2. O código pode ser executado a partir de outra macro? 
 
Se a resposta for negativa para alguma dessas perguntas, significa que 
a Sub é privada, ou seja, ninguém ou nenhum processo consegue 
“enxergá-la”, exceto o próprio módulo. Já a pública funciona de forma 
contrária. Quando não houver discriminação sobre Sub ser pública ou 
privada, o VBA compreende que a Sub é pública por definição. 
 
// Funções (Functions) 
A definição de privado e público para Subs também valem para funções. 
Vamos voltar ao exemplo do cálculo da equação de segundo grau; caso 
você não queira que suas funções sejam acessadas por qualquer pessoa, 
você pode colocar um private em todas as funções, bloqueando-as. 
Assim, somente o módulo que possui essas funções as enxergará. 
Mas por que não deixar tudo como público? Vamos pensar no controle 
remoto da televisão. Você sabe que, ao pressionar o sinal de + (mais), o 
volume aumenta e, se pressionar o sinal de – (menos), o volume diminui. 
Você precisa ter acesso à placa do circuito do controle para realizar esta 
operação? Não, você não precisa. 
Considere o controle remoto um programa que você criou. As funções 
dos botões não são abertas ao usuário. Você, desenvolvedor, as conhece 
e sabe como elas funcionam, entretanto, para o usuário, interessa 
apenas aumentar ou diminuir o volume, por exemplo, mas não interessa 
a programação. 
 
Podemos dizer, portanto, que toda a lógica por trás das ações do 
controle remotoé privada. Entretanto, sua interface é pública, uma 
vez que permite interagir com o aparelho. 
 
VAMOS REFORÇAR O QUE APRENDEMOS ATÉ AGORA? 
 
Em relação a modificadores de acessos, pode-se afirmar que: 
 
Resposta = O modificador private, quando aplicado em uma função, a 
tornará disponível apenas dentro do módulo. 
 
SINTETIZANDO 
No decorrer dessa unidade, você pôde compreender os conceitos que 
envolvem os operadores aritméticos, de comparação e lógicos. Quando 
falamos de operadores aritméticos, nos vêm à mente os operadores 
clássicos da matemática, como adição, subtração, divisão e 
multiplicação. Porém, vimos mais outros dois operadores diferentes: a 
exponenciação, representada pelo acento circunflexo (^); e o módulo, 
responsável por receber o resto de uma divisão. 
Outra forma de relacionarmos variáveis, além da utilização de 
operadores aritméticos, é através do uso dos operadores de 
comparação. Utilizaremos com muita frequência esse tipo de operador 
durante nosso tempo de estudos, principalmente em conjunto com os 
operadores lógicos E, OU e OU Exclusivo. 
Observamos, também, as principais funções matemáticas, bem como as 
propriedades que a cercam, como parâmetros de entrada e o que cada 
função retorna. 
Vimos o conceito de modularização, e, também, que podemos criar 
nossas próprias funções e invocá-las em qualquer parte do código. Esse 
é um procedimento de organização do código, que facilita sua leitura e 
manutenção. 
Por fim, vimos que as funções e as sub-rotinas possuem modificadores 
de acessos. Quando públicas (public), elas podem ser vistas e chamadas 
em qualquer local do Excel e do nosso programa VBA. Por outro lado, 
quando estão no modo privado (private), só é possível invocar uma 
função dentro do módulo que a implementou. 
 
REFERÊNCIAS BIBLIOGRÁFICAS 
CORMEN, T. et. al. Algoritmos: teoria e prática. 2. ed. São Paulo: Editora 
Campus, 2002. 
EDELWEISS, N.; LIVI, M. Algoritmos e programação com exemplos em 
Pascal e C. Porto Alegre: Bookman, 2014. 
MICROSOFT. Funções matemáticas (Visual Basic). [s. l.], 27 jan. 2020. 
Disponível em: <https://docs.microsoft.com/pt-br/dotnet/visual-
basic/language-reference/functions/math-functions>. Acesso em: 01 jun. 
2020. 
MICROSOFT. Introdução ao VBA no Office. [s. l.], 14 ago. 2019. 
Disponível em: <https://docs.microsoft.com/pt-br/office/vba/library-
reference/concepts/getting-started-with-vba-in-office>. Acesso em: 02 abr. 
2020. 
SHARP, H.; ROGERS, Y.; PREECE, J. Interaction design: beyond human-
computer interaction. Nova Iorque: John Wiley & Sons, 2002. 
STRINGS: conceito e utilização - Linguagem C. Postado por Eduardo 
Casavella. (11min. 14s.). son. color. port. Disponível em: 
<https://youtu.be/x3YFQjWFGy4>. Acesso em: 22 maio 2020. 
WALKENBACH, J. Programando Excel VBA para leigos. Rio de Janeiro: 
Alta Books, 2013. 
 
 
 
 
https://docs.microsoft.com/pt-br/dotnet/visual-basic/language-reference/functions/math-functions
https://docs.microsoft.com/pt-br/dotnet/visual-basic/language-reference/functions/math-functions
https://docs.microsoft.com/pt-br/office/vba/library-reference/concepts/getting-started-with-vba-in-office
https://docs.microsoft.com/pt-br/office/vba/library-reference/concepts/getting-started-with-vba-in-office
https://youtu.be/x3YFQjWFGy4

Continue navegando