martes, 9 de diciembre de 2014

Calculadora 2 - EXCEL 2007


Esta calculadora realiza las operaciones básicas de matemáticas, suma, resta, producto y división.

Lo primero será diseñar la base de la calculadora, abrimos Visual Basic (Alt+F11).

Creamos un Userform, no demasiado grande, solo va a contener un Textbox, unos botones para los números, otros para las operaciones y el botón igual.

Algo así:


Hay que cambiar algunas de las propiedades de todos los botones y TextBox.
Poner un nombre adecuado a cada botón puede ahorrarnos algún que otro contratiempo.
A los botones de los números llamarlos Btn1, Btn2, Btn3,... a las operaciones BtnSuma, BtnResta,..
El único que se diferencia es el TextBox, solo hay uno.

Otra opción a retocar es TabIndex, u orden de tabulación.
¿Para que sirve?, para que al tabular el recorrido de la selección vaya desde el 1 al 0 como último número.
De ahí pasar a los botones de las operaciones, "+", "-", "*"; "/", el punto decimal y por último el igual.
No es obligatorio, cada cual pone el orden a su aire, pero esta sería una forma mas o menos ordenada.

Otra opción a cambiar en el TextBox es TextAlign, o alineación del texto. Seleccionar la opción fmTextAlignRight. De esta manera los números comienzan de la derecha hacia la izquierda cada vez que se inserta un valor, como las calculadoras físicas.

Estas serán algunas de las propiedades a retocar.


Vamos ahora a la parte "mecánica" del asunto, el código para que todo el conjunto funcione.
Doble clic en el Userform para que muestre el modulo de escritura.
El código se puede dividir en varias partes.
Definimos las variables:

'Variables
Dim DATO As Double
Dim DATO2 As Double
Dim RESULTADO As Double
Dim OPERACION As Double
Dim PUNTO As Double

Ahora a reglón seguido escribir el código del botón Igual, este botón es el que finaliza las operaciones y es el que lleva todo el peso de la calculadora,  un condicional escoge el tipo de operación a realizar.
Ejemplo: la Operación 1 realiza la suma, DATO + DATO2.  

'Botón Igual:
Private Sub BtnIgual_Click()
DATO2 = Val(TextBox1.Text)
BtnPunto.Enabled = True

If OPERACION = 1 Then
    RESULTADO = DATO + DATO2
    TextBox1.Text = RESULTADO
Else
    If OPERACION = 2 Then
    RESULTADO = DATO - DATO2
    TextBox1.Text = RESULTADO
Else
    If OPERACION = 3 Then
    RESULTADO = DATO * DATO2
    TextBox1.Text = RESULTADO
Else
    If OPERACION = 4 Then
    RESULTADO = DATO / DATO2
    TextBox1.Text = RESULTADO
End If
End If
End If
End If

End Sub

Para que al pulsar el botón adecuado escriba un número del 0 al 9. Copiamos la rutina y la pegamos 10 veces, una por número cambiar el nombre de la rutina y asignarle el dígito que va a representar a cada pulsación. Aquí dejo un ejemplo de los tres primeros números:

'Para el Nº 0:
Private Sub CommandButton10_Click()
Me.TextBox1 = Me.TextBox1 & "0"
End Sub

'Para el Nº 1:
Private Sub CommandButton1_Click()
Me.TextBox1 = Me.TextBox1 & "1"
End Sub

'Para el Nº 2
Private Sub CommandButton2_Click()
Me.TextBox1 = Me.TextBox1 & "2"
End Sub

...Y así hasta el último, que será el 9.

El botón de borrado llevara este código, a cada pulsación limpiará el TextBox de cualquier cifra::

'Borrar
Private Sub BtnBorrar_Click()
    Me.TextBox1 = ""
    BtnPunto.Enabled = True
End Sub

Para los botones de operaciones.
Cada botón de operación llevara un número del 1 al 4, cada operación un número diferente.

'Suma:
Private Sub BtnSuma_Click()
    OPERACION = 1
    DATO = Val(TextBox1.Text)
    Me.TextBox1 = ""
    BtnPunto.Enabled = True
End Sub

'Resta:
Private Sub BtnResta_Click()
    OPERACION = 2
    DATO = Val(TextBox1.Text)
    Me.TextBox1 = ""
    BtnPunto.Enabled = True
End Sub

...Así hasta completar las 4 operaciones.

Solo falta el punto para los decimales.

'Para el botón punto o decimal.
Private Sub BtnPunto_Click()
    Me.TextBox1 = Me.TextBox1 & "."
    PUNTO = 1
    If PUNTO = 1 Then
        BtnPunto.Enabled = False
    End If
End Sub

Con todo este código, si esta bien resuelto, seria suficiente para que la calculadora funcione perfectamente y realice cualquiera de las cuatro operaciones e incluso con decimales.

La macro trabaja de la siguiente manera:
-Se inserta un número cualquiera.
-Al pulsar en cualquier operación el número se guarda en memoria y se borra el TextBox.
-Se introduce el segundo número y al pulsar el botón Igual se define la OPERACIÓN.
-La macro Igual selecciona entre sus parámetros y busca el Nº de la OPERACIÓN.
-Realiza la operación correspondiente.

Falta mejorar las funciones a realizar, por ejemplo, si se quieren sumar mas de dos cifras, o que al dar un resultado no permita escritura alguna ya que si pulsamos un botón de número este se incluye y no borra el resultado anterior.

Lo dejaremos para otra entrega ;)

También puede perderse un rato con el diseño.


Para llamar a la calculadora desde la hoja activa hay que dibujar un botón e insertar en un módulo esta rutina:

Sub LlamarCalc()

Userform1.Show

End sub


Archivo Calculadora 2
Relacionada: Calculadora 1