© FCA - Editora de Informática 1
[…]
Após o estudo aprofundado das facilidades da folha de cálculo Excel, impõe-se que nos debrucemos sobre a linguagem de programação Visual Basic for Appli-cations, embutida naquela aplicação da Microsoft e que permite automatizar tarefas e extender as suas funcionalidades.
O Excel 2007 e o VBA constituem, assim, uma ferramenta de desenvolvimento de aplicações que, assentando nas funcionalidades das folhas de cálculo, permite automatizá-las, personalizá-las e estendê-las através da programação, para criar poderosos sistemas de tratamento automático de dados. A Fig. 1.1 mostra a utili-zação de um programa de VBA que automatiza a efectuação de determinados cálculos. O programa assenta nas funcionalidades do Excel, nomeadamente nos seus objectos – folhas, células e botões – combina-as e automatiza-as, estendendo, assim, a funcionalidade do Excel.
A B C D E 1 P100 560 100 ... 2 P110 789 89 ... 3 P120 89 65 ... 4 P130 765 78 ... 5 P140 432 87 ... 6 ... ... ... ...
Fig. 1.1: Programa em VBA que automatiza determinados cálculos e permite a sua efectuação através de um botão colocado na folha do Excel.
[…]
4.2.4.
E
XPRESSÕES DE COMPUTAÇÃO
As expressões de computação são expressões aritméticas, expressões alfanuméri-cas ou expressões lógialfanuméri-cas que o computador entende e pode calcular.
Programa
VBA Efectuar
Expressões aritméticas
O VBA implementa várias operações aritméticas e funções matemáticas que, correctamente ligadas, formam expressões aritméticas.
Operações aritméticas
Operação Operador Prioridade Exemplo Resultado
Adição + 6 4+6 10
Subtracção – 6 70-8 62
Resto MOD 5 5 MOD 2 1
Divisão inteira \ 4 81\8 10
Multiplicação * 3 3*9 27
Divisão / 3 25/2 12,5
Potenciação ^ 2 4^3 64
As operações entre parênteses têm prioridade 1. Podemos, portanto, alterar a ordem de execução das operações, colocando-as entre parênteses
Exemplo de resolução, passo a passo, de uma expressão
5* ( 3 + 6 ^ 2 ) / 3 36 39 195 65
Resolução de expressões de computação em VBA
1. Cálculo de expressões de computação em VBA 1.1 Executar o editor de VBA
1.2 Inserir o módulo 1.3 Digitar o procedimento
1.4 Seleccionar Run - Run Sub
[...]
[…]
B) Estruturas repetitivas condicionais
A frase de controlo de ciclo das estruturas repetitivas condicionais inclui uma con-dição que determina o fim da repetição (Fig. 4.31).
Há dois tipos de estruturas repetitivas condicionais: • Repetir enquanto condição verdadeira;
• Repetir até condição verdadeira.
A estrutura repetir enquanto
Nesta estrutura repetitiva condicional, o corpo do ciclo é repetido enquanto deter-minada condição for verdadeira.
A estrutura repetir enquanto pode subdividir-se em duas outras estruturas, uma com a frase de controlo no início do ciclo, e outra com a frase de controlo no fim do ciclo:
I – Controlo no início do ciclo II – Controlo no fim do ciclo
Repetir enquanto condição Repetir
Corpo do ciclo Corpo do ciclo
Fimenq enquanto condição
Estrutura repetir enquanto com frase de controlo no início do ciclo
Nesta estrutura repetitiva condicional:
• A condição é avaliada no início do ciclo;
• O corpo do ciclo repete-se enquanto a condição for verdadeira;
• A repetição do corpo do ciclo termina quando a condição se torna falsa; • O corpo do ciclo não é executado nenhuma vez se a condição for
inicial-mente falsa.
A Fig. 4.32 mostra em fluxograma a repetição das instruções do corpo do ciclo enquanto a condição de início do ciclo for verdadeira. Quando a condição se tornar falsa, é retomada a sequência de execução.
Fig. 4.32: Fluxograma da estrutura repetir enquanto com frase de controlo no início do ciclo.
[...]
VBA da estrutura repetir enquanto condição
Instruções diversas Do While condição
Corpo do ciclo - conjunto de instruções que se repete enquanto a condição for verdadeira Loop
Restantes instruções
[...]
Exemplo de pesquisa linear de um vector
Procura do número 40 no seguinte vector:
A= 20 15 40 60 70
1. Inserção à cauda do elemento A(6)=40
A= 20 15 40 60 70 40
2. Procura do número 40, comparando
I A(I) A(I)=40 Observação 1 20 F
2 15 F
3 40 V 40 é o elemento 3 do vectorA
A procura do mesmo número 40 no vector B,
B= 20 15 35 60 70
terminava no elemento índice 6 que efectivamente não existe no vector.
B= 20 15 35 60 70 40 I B(I) B(I)=40 Observação 1 20 F
I B(I) B(I)=40 Observação 3 35 F
4 60 F 5 70 F
6 40 V A procura terminou e 40 não existe no vector B
Top-down
1. Pesquisa linear de um número num vector com N elementos
1.1 Formação do vector por atribuição de valores aleatórios aos N elementos 1.2 Leitura do número a procurar
1.3 Inserção de um elemento fictício igual ao valor que procuramos
1.4 Procura do número enquanto não o encontrarmos e for possível encontrá-lo 1.4.1 Comparação dos números de vendedores com o número a procurar
1.5 Impressão do índice do elemento que for igual ao valor procurado, no caso de não
termos encontrado, impressão de uma mensagem apropriada Variáveis
Variável Tipo Significado
A() Inteira + Vector de números inteiros
I Inteira + Índice linha de cada elemento do vector N Inteira + Número total de elementos do vector X Inteira + Número do vendedor a procurar
AlgoritmoPesquisaLinear
Procura linear de um número num vector. INÍCIO
10 [ Formação do vector de N inteiros aleatórios compreendidos entre 100 e 200 ] Ler(N)
Repetir para I=1 até N
A(I)= Int((200 - 100 + 1) * Rnd + 100)
Fimpara
20 [ Leitura do número a procurar ] Ler(X)
40 [ Procurar o número enquanto não o encontrarmos e for possível procurar ] Repetir enquanto A(I,1)<>X
I:=I+1 Fimenq
50 [ Afixar o nome e volume de vendas ou mensagem apropriada ] Se I<>N+1
Então Escrever(X, “é o elemento índice”,I,”do vector”) Senão Escrever (“O número”,X, “ não existe no vector!!”) Fimse
FIM
Procedimentos em VBA
1. Execute o editor de VBA e insira um módulo 2. Digite
Option Base 1
Public Sub PESQUISALINEAR()
Dim A() As Integer, Nomecaixa As String Dim I As Integer, N As Integer, X As Integer N = InputBox("Quantos elementos tem o vector?") ReDim A(N + 1)
For I = 1 To N
A(I) = Int((200 - 100 + 1) * Rnd + 100) Next I
X = InputBox("Digite o número a procurar", Nomecaixa) A(N + 1) = X I = 1 Do While A(I) <> X I = I + 1 Loop If I <> (N + 1) Then
MsgBox Str(X) + " é o elemento índice" + Str(I) + " do vector A", , Nomecaixa
Else
MsgBox "O número" + Str(X) + "não existe no vector!!", , Nomecaixa End If
End Sub
[...]
Exemplo da invocação de procedimentos
A Fig. 6.2 mostra o encadeamento da execução de três procedimentos. O proce-dimento ProgramaPrincipal, a certa altura da sua execução, invoca o procedi-mento P, passando-lhe três arguprocedi-mentos; P é então executado, fazendo correspon-der aos seus três parâmetros os três argumentos que recebeu. Após a conclusão de P1, o controlo e execução passa para ProgramaPrincipal. A seguir, depois de excutar mais instruções suas, o ProgramaPrincipal invoca Q, passando-lhe quatro
argumentos; Q é executado, fazendo corresponder aos seus quatro parâmetros os quatro argumentos que recebeu. Após a conclusão da execução de Q, o controlo de execução é devolvido a ProgramaPrincipal que continua a executar as suas instruções.
Fig. 6.2: Encadeamento da execução de três procedimentos de acordo com as res-pectivas ordens de execução.
[…]
FUNÇÕES DEFINIDAS PELO UTILIZADOR
As funções definidas pelo utilizador destinam-se a suprir a falta de funções embu-tidas apropriadas; obedecem à sintaxe destas e executam-se analogamente, digi-tando-se numa célula:
=NomedaFunção(lista de argumentos)
ou, se forem “Públicas”, recorrendo-se ao assistente de funções que as classifica na categoria User Defined.
As funções definidas pelo utilizador são escritas em VBA, aplicando-se, portanto, as noções fundamentais que descrevemos anteriormente.
Defina uma função que calcule as taxas de juro periódicas equivalentes a uma dada taxa efectiva anual.
Top-down
1. Cálculo de uma taxa efectiva periódica dada a taxa efectiva anual
1.1 Cálculo da taxa equivalente periódica por aplicação da regra fundamental da equi-valência:
“Taxas de juro equivalentes, aplicadas ao mesmo capital inicial, durante o mesmo prazo, devem gerar o mesmo capital acumulado, independentemente do período de referência das taxas ou do período de capitalização” (Cadilhe, 1994).
C0 ( 1 + txanual ) = C0 (1 + i ) ^ nper
i = ( 1 + txanual ) ^ ( 1 / nper ) - 1
C0 - Capital inicial
i - Taxa efectiva periódica
nper - Número de períodos de capitalização por ano txanual - Taxa de juro anual efectiva
Resultado, parâmetros e variável
Resultado Tipo Significado Txefect Real + Taxa efectiva periódica
Parâmetro Tipo Significado
Txanual Real + Taxa anual efectiva
Nper Inteiro + Número de períodos de capitalização por ano Variável Tipo Significado
Tx Real + Taxa efectiva periódica
Função Txefect (Txanual, Nper) Cálculo da taxa efectiva periódica. INÍCIO
10 [ Cálculo da taxa equivalente periódica ] Txefect:= (1+Txanual)^(1/Nper)-1 REGRESSO
Procedimentos em VBA
2. Digite
Public Function Txefect(Txanual As Single, Nper As Integer) _ As String Dim Tx As Single Tx = (1 + Txanual) ^ (1 / Nper) - 1 Txefect = Format(Tx, "#.##0%") End Function Execução da função 1. Digite A B C D 3 Taxa anual efectiva Período Número de períodos por ano
Taxa efectiva periódica 4 6% Trimestre 4 5 Quadrimestre 3 4 6% Semestre 2 2. Digite =Txefect($A$4;C4) em D4 3. Copie D4 para D5:D6 D
3 Taxa efectiva periódica
4 1,467%
5 1,961%