Informática para Engenharia das Ciências Agrárias

Aulas Práticas

Aula 15: VBA VI (2001.12.13)

9. Construa uma espécie de máquina de calcular que permita executar cálculos numéricos envolvendo as quatro operações básicas de cálculo. O acesso à máquina deve ser conseguido através do uso de um botão de comando. No final da sua utilização, o resultado obtido no visor da máquina deve ser copiado para a célula activa. As alíneas que se seguem orientam o desenvolvimento da máquina pretendida.

9.1. No editor do Visual Basic crie um novo formulário de nome FormCalc para representar a máquina de calcular.

9.2. Adicione os controlos que se indicam e estruture-os de modo a que o aspecto do formulário se assemelhe ao da figura abaixo.

9.3. À semelhança do exercício anterior, crie um botão de comando que apresente o formulário.

9.4. No editor do Visual Basic seleccione o módulo da calculadora e insira o seguinte código:

Option Explicit
Dim memoria As Double
Dim sinal As String * 1
Dim inicio As Boolean
O código acima declara três variáveis para representar o conteúdo em memória (memoria), o último sinal que foi premido (sinal), e se já foi ou não inserido algum número (inicio).

9.5. Para iniciar as variáveis atrás declaradas, utilize o evento Initialize do formulário. Este evento ocorre sempre que o formulário é iniciado.

Private Sub UserForm_Initialize()
   memoria = 0
   sinal = ""
   inicio = True
   Visor = 0
End Sub

9.6. Defina os eventos Click dos botões BotãoClear, BotãoOK e BotãoCancelar como se segue:

Private Sub BotãoClear_Click()
   memoria = 0
   sinal = ""
   inicio = True
   Visor = 0
End Sub
Private Sub BotãoOK_Click()
   ActiveCell = Visor
   Unload Me
End Sub
Private Sub BotãoCancelar_Click()
   Unload Me
End Sub
Execute o formulário da calculadora, prima os botões em causa, verifique o sucedido e tente compreender o código respectivo.

9.7. Defina o evento Click dos botões numéricos como uma chamada ao procedimento Numero_Click com o algarismo do próprio botão como argumento. O exemplo que se segue apresenta o código para os botões 0 e 1. De modo análogo escreva o código para os restantes botões.

Private Sub Botão0_Click()
   Numero_Click 0
End Sub
Private Sub Botão1_Click()
   Numero_Click 1
End Sub
Para que a acção de premir um botão numérico funcione, é ainda necessário definir o procedimento Numero_Click acima referido. Este procedimento deve actualizar o visor da máquina de calcular à medida que os algarismos vão sendo premidos.
Private Sub Numero_Click(num As Integer)
   ...
End Sub

9.8. Defina o evento Click dos botões de operação como uma chamada ao procedimento Sinal_Click com o sinal do próprio botão como argumento. Segue-se um exemplo para o botão de somar.

Private Sub BotãoSomar_Click()
   Sinal_Click "+"
End Sub
Por fim, defina o procedimento Sinal_Click. Este procedimento deve guardar o sinal premido e efectuar as operações pendentes (pense no que acontece numa vulgar máquina de calcular!).
Private Sub Sinal_Click(s As String)
   ...
End Sub