Cómo hacer una calculadora con Visual Basic 6
Microsoft Visual Basic es un lenguaje basado en BASIC, creado para facilitar el aprendizaje de la programación. Visual Basic toma los comandos familiares de BASIC y añade herramientas orientadas a objetos e interfaces para diseñar aplicaciones Windows WYSIWYG y controles web, entre otras mejoras. Un proyecto de aprendizaje relativamente simple es crear una calculadora de Windows.
Paso 1
Abre Visual Basic 6 y selecciona EXE estándar en el menú Nuevo proyecto. Verás un formulario en blanco.
Paso 2
Renombra tu proyecto y formulario: clic en Proyecto1 en el explorador de proyectos (derecha), escribe nuevo nombre en la propiedad Name de la ventana Propiedades (abajo). Pulsa Enter. Haz lo mismo con el formulario (nombre sugerido: CalculatorUI), asegurándote de poner un nombre similar en la propiedad Caption (cambia el texto de la barra de título). Guarda el proyecto en una carpeta nueva.
Paso 3
Añade botones y un cuadro de texto al formulario. Primero, un TextBox (donde aparecerán números y resultados). Selecciona el botón TextBox en la barra de herramientas (izquierda) y arrastra para definir tamaño y posición. Puedes cambiar tamaño/posición arrastrando el control o sus controladores (cuadrados en el borde). Con el TextBox seleccionado, cambia en Propiedades:
- (Name) = tbResult
- Alignment = 1 - Right Justify
- Data Format = (clic en «...») Number
- Locked = True
- Text = 0
Paso 4
Selecciona el icono CommandButton en la barra de herramientas y crea botones igual que el TextBox. Usa la calculadora de Windows en vista Estándar (Programas > Accesorios > Calculadora) como referencia, omitiendo botones «MC», «MR», «MS», «M+». En cada botón cambia propiedades (ej. botón «+»):
- (Name) = btnPlus
- Caption = +
Haz lo mismo para los demás botones y guarda. Tu formulario debería parecerse al ejemplo.
Paso 5
Añade el código. Nota: si tus botones y textbox no se llaman igual que en el código, cambia los nombres en el código o renombra los controles. Primero, variables para procesar la entrada:
Dim sLeft As String, sRight As String, sOperator As String
Dim iLeft As Double, iRight As Double, iResult As Double
Dim bLeft As Boolean
Cada cálculo tiene cuatro partes: número izquierdo (sLeft, iLeft), operador (sOperator), número derecho (sRight, iRight), resultado (iResult). Para saber si el usuario está introduciendo el número izquierdo o derecho, usamos variable booleana bLeft. Si bLeft es True, se entra el lado izquierdo; si False, el derecho.
Paso 6
Inicializa bLeft. Crea subrutina Form_Load (escribiéndola o doble clic en zona vacía del formulario). Dentro, pon bLeft = True porque el primer número será el izquierdo:
Private Sub Form_Load()
bLeft = True
End Sub
Paso 7
Crea subrutina que gestione el clic en cualquier botón numérico. Usamos subrutina porque el código es idéntico para los 10 botones, evitando repetirlo. Escribe bajo el End Sub de Form_Load:
Private Sub AddNumber(sNumber As String)
If bLeft Then
sLeft = sLeft + sNumber
tbResult.Text = sLeft
Else
sRight = sRight + sNumber
tbResult.Text = sRight
End If
End Sub
Esta función toma un parámetro string sNumber (el número del botón pulsado). Si bLeft es True, lo añade a sLeft y actualiza tbResult. Si False, hace lo mismo con sRight.
Finalmente, crea un evento Click para cada botón numérico que llame a AddNumber. Doble clic en cada botón numérico crea la estructura; añade la llamada. Para el botón 0:
Private Sub btn0_Click()
AddNumber ("0")
End Sub
Para el 1:
Private Sub btn1_Click()
AddNumber ("1")
End Sub
Paso 8
Gestiona operadores: +, -, *, /. Igual que antes, subrutina llamada desde eventos Click de botones de operador:
Private Sub AddOperator(sNewOperator As String)
If bLeft Then
sOperator = sNewOperator
bLeft = False
Else
btnEquals_Click
sOperator = sNewOperator
sRight = ""
bLeft = False
End If
End Sub
Si bLeft es True (usuario acaba de entrar lado izquierdo), guarda operador en sOperator y pone bLeft = False (ya no se entra lado izquierdo). Para encadenar operadores (ej. 9 * 3 * 2 * 6), si bLeft es False (usuario pulsó operador cuando se esperaba igual), llama a btnEquals_Click (próximo paso) que calcula y muestra resultado parcial. Luego limpia sRight para siguiente número y pone bLeft = False.
Añade llamada a AddOperator en cada botón operador. Para +:
Private Sub btnPlus_Click()
AddOperator ("+")
End Sub
Para -:
Private Sub btnMinus_Click()
AddOperator ("-")
End Sub
Paso 9
Crea evento Click para botón Igual (=), el más complejo. Doble clic en el botón = para crear estructura. Código:
Private Sub btnEquals_Click()
If sLeft <> "" And sRight = "" And sOperator <> "" Then
sRight = sLeft
End If
If sLeft <> "" And sRight <> "" And sOperator <> "" Then
iLeft = sLeft
iRight = sRight
Select Case sOperator
Case "+"
iResult = iLeft + iRight
Case "-"
iResult = iLeft - iRight
Case "/"
iResult = iLeft / iRight
Case "*"
iResult = iLeft * iRight
End Select
tbResult.Text = iResult
sLeft = iResult
sRight = ""
bLeft = True
End If
End Sub
Las primeras 3 líneas: si solo hay lado izquierdo y operador, copia izquierdo a derecho (comportamiento estándar: 9 * = → 81). El resto ejecuta solo si hay ambos lados y operador. Copia strings a variables Double para calcular. Select Case ejecuta operación según operador, guarda en iResult. Actualiza textbox, copia resultado a sLeft, resetea sRight, pone bLeft = True para permitir encadenar cálculos.
Paso 10
Gestiona tres botones restantes: raíz cuadrada (√), % y 1/x.
Para √:
Private Sub btnSqrt_Click()
If sLeft <> "" Then iLeft = sLeft Else iLeft = 0
If sRight <> "" Then iRight = sRight Else iRight = 0
If bLeft Then
iLeft = Math.Sqr(iLeft)
tbResult.Text = iLeft
Else
iRight = Math.Sqr(iRight)
tbResult.Text = iRight
End If
If iLeft <> 0 Then sLeft = iLeft Else sLeft = ""
If iRight <> 0 Then sRight = iRight Else sRight = ""
End Sub
Primeras 11 líneas: si no hay valor en un lado, usa 0 para evitar error. Líneas medias: calcula raíz del lado actual (izq o der). Final: revierte comprobaciones iniciales para copiar 0 como string vacío.
Para % (solo si ambos lados entrados):
Private Sub btnPercent_Click()
If Not bLeft Then
If sRight <> "" Then iRight = sRight Else iRight = 0
iRight = iRight * (iLeft / 100)
tbResult.Text = iRight
If iRight <> 0 Then sRight = iRight Else sRight = ""
End If
End Sub
Para 1/x (fracción):
Private Sub btnFraction_Click()
If sLeft <> "" Then iLeft = sLeft Else iLeft = 0
If sRight <> "" Then iRight = sRight Else iRight = 0
If bLeft Then
iLeft = 1 / iLeft
tbResult.Text = iLeft
Else
iRight = 1 / iRight
tbResult.Text = iRight
End If
If iLeft <> 0 Then sLeft = iLeft Else sLeft = ""
If iRight <> 0 Then sRight = iRight Else sRight = ""
End Sub
Paso 11
Botones C (borra todo) y CE (borra entrada actual):
Private Sub btnC_Click()
sLeft = ""
sRight = ""
sOperator = ""
tbResult.Text = "0"
bLeft = True
End Sub
Private Sub btnCE_Click()
If bLeft Then sLeft = "" Else sRight = ""
tbResult.Text = "0"
End Sub
Paso 12
Ejecuta tu calculadora y haz cualquier cálculo. Este programa puede ampliarse fácilmente para más operaciones, cálculos complejos o incluso calculadora científica con un poco de trabajo extra.
Consejo
Si hay errores, revisa línea a línea, enfocándote en las que VB señala, y compara con el código de arriba. El código de este artículo ha sido probado y está libre de errores; copiarlo fielmente dará un programa funcional. Si usas versión anterior de VB, pueden haber cambios (ej. VB anterior usaba Math.Sqrt() en vez de Math.Sqr()). Consulta la referencia de tu versión.
- ·Cómo hacer una escoba con maíz de escoba
- ·¿Se pueden crear apps para Android con Visual Basic?
- ·¿Puedo crear apps para Android con Visual Basic?
- ·Crear un formulario de registro online en HTML (envío por email)
- ·Cómo hacer un volante con GIMP
- ·Cómo hacer emoticonos de Kirby con el teclado
- ·Cómo escribir un cuadrado (■ □ ◆ ◇) con el teclado (códigos Alt)
- ·Cómo crear un cifrado de sustitución simple en Excel
- Cómo hacer letras con una fresadora (router) de madera
- Cómo hacer etiquetas de dirección con Excel y Word
- Cómo aplicar estilo a una etiqueta de formulario con CSS
- Cómo hacer un formulario rellenable con Microsoft Word
- Cómo insertar una cruz (†) en Word, Outlook y Excel
- Cómo crear una imagen ISO con WinRAR
