Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Formulario en VBA aplicado a Registro de Venta de Entradas para el Cine

| 2 comentarios

Los formularios en VBA nos permiten colocar controles que nos ayudarán a solicitar información de forma ordenada. Podremos colocar cajas de texto, etiquetas, cuadros combinados, botones de comando, etc. De esta manera la recolección de información se hace más accesible y se reducen las tareas repetitivas.

En esta ocasión se ha querido simplificar el registro de Ventas de Entradas en el Cine. De esta manera creando un formulario determinado podemos acceder a una base de datos creada por nosotros mismos mientras ingresamos entradas.

Los formularios de Excel son creados desde el Editor de Visual Basic donde debemos seleccionar la opción de menú Insertar y posteriormente la opción UserForm. También se puede insertar un userform haciendo click derecho en "ThisWorkbook" , insertar y userform.

Luego se diseña un formulario que pueda permitir el ingreso de todos los datos necesarios para el registro. En este caso, se hicieron 2 formularios: Uno de bienvenida al usuario el cual quedó quedó así, con la ayuda del cuadro de herramientas :

2 300x168 Formulario en VBA aplicado a Registro de Venta de Entradas para el Cine

(Para mayor visualización de la imagen, hacer click en la misma)

Insertamos con el cuadro de herramientas, una imagen, una etiqueta y un botón de comando.

Colocamos este código en "ThisWorkBook":
Private Sub Workbook_Open()
UserForm2.Show
End Sub

De esta manera, cada vez que se acceda al documento que estamos haciendo, nos aparezca este formulario como aviso de bienvenida.

Dentro del botón Empezar, escribimos el siguiente código:
Private Sub CommandButton1_Click()
Unload UserForm2
End Sub

Ya que al hacer click en Empezar, el cuadro desaparecerá, y dará paso a la hoja de excel donde está este nuevo Botón de comando el cual nos lleva al formulario de Ventas. Este formulario de venta ha sido diseñado de la siguiente manera:

1

(Para mayor visualización de la imagen, hacer click en la misma)

Se pueden agregar más o poner menos datos. Cada quien puede personalizar su userform como más le parezca.

Se agregó un cuadro combinado que nos permite desplegar un lista de posibilidades, en este caso películas. Es necesario este código:

Private Sub UserForm_Activate()
Ult = Cells(Rows.Count, 1).End(xlUp).Row
For x = 2 To Ult
ComboBox1.AddItem (Cells(x, 1))

Next

End Sub

Esta forma abreviada permite que todos los elementos que están en la hoja 1 (películas) se posicionen como opciones en el Cuadro combinado, y si en caso necesitemos agregar más o quitar alguno, el cambio se realiza también en la macro cuando se modifique el objeto en las celdas correspondientes.

En el botón Generar Monto obtendrá el monto a pagar por el cliente. Esta cantidad de obtiene al multiplicar el precio de la entrada (12 soles) por la cantidad de entradas que esta comprando el cliente. Para lo cual se inserta el siguiente código:
Private Sub CommandButton2_Click()
TextBox5.Value = TextBox4.Value * 12

El botón registrar venta carga con el siguiente código:

Private Sub CommandButton1_Click()
Sheets("Hoja2").Select
Ult = Cells(Rows.Count, 1).End(xlUp).Row
Cells(Ult + 1, 1) = TextBox1.Text
Cells(Ult + 1, 2) = TextBox2.Text
Cells(Ult + 1, 3) = TextBox3.Text
Cells(Ult + 1, 4) = ComboBox1.Text
Cells(Ult + 1, 6) = TextBox4.Text
Cells(Ult + 1, 7) = TextBox5.Text

If OptionButton1.Value = True Then
Cells(Ult + 1, 5) = OptionButton1.Caption
End If
If OptionButton2.Value = True Then
Cells(Ult + 1, 5) = OptionButton2.Caption
End If
If OptionButton3.Value = True Then
Cells(Ult + 1, 5) = OptionButton3.Caption

End If
If OptionButton4.Value = True Then
Cells(Ult + 1, 8) = OptionButton4.Caption
End If
If OptionButton5.Value = True Then
Cells(Ult + 1, 8) = OptionButton5.Caption
End If

TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
ComboBox1.Text = ""

OptionButton1.Value = False
OptionButton2.Value = False
OptionButton3.Value = False
OptionButton4.Value = False
OptionButton5.Value = False

End Sub

 

Basicamente lo que estamos logrando con este código es que en la hoja 2 de nuestro documento se vayan registrando los datos de cada venta de entradas al cine que se hagan desde el formulario. (en orden y sin tener que ingresarlas una por una en las celdas).

Recordemos que necesitamos que cada vez que se haga un ingreso, los datos se quedan aún en las casillas de texto, por tanto es necesario que se eliminen para que den paso a un formulario listo para ingresar una nueva venta. Es por eso que en el código habíamos agregado:

TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
ComboBox1.Text = ""

OptionButton1.Value = False
OptionButton2.Value = False
OptionButton3.Value = False
OptionButton4.Value = False
OptionButton5.Value = False

Ya que se encargarán de limpiar el formulario luego del ingreso de datos de una venta.

Finalmente agregamos un botón de comando en la primera hoja del libro de excel ya que nos permitirá acceder al formulario cuando hagamos click en el.

Untitled

(Para mayor visualización de la imagen, hacer click en la misma)

El objetivo de este userform, como se habrá podido notar, es hacer más llevadera la tarea de Registrar Ventas.

Aquí adjunto el ejercicio en excel de manera que pueda ser revisado y entendido de mejor manera.

 

Saludos

 

Milagros Aguilar Salvador

 

Formulario VBA aplicado a Registro de Ventas de Entradas de Cine

 

 

 

 

 

2 comentarios

  1. me gustaria saber como colocar a un texbox formato numerico. muchas gracias

  2. Buenas tardes.

    Estoy teniendo inconvenientes al querer almacenar mi informacion en otras hojas.

    Pasa de que he realizado un formulario en VBA. Primero para ingresar al formulario debo dar click al boton "registro" que esta en la Hoja 1, me abre la ventana emergente del formulario, escribo los datos y le doy grabar. cuando voy a la hoja donde debe ser grabado efectivamente esta grabado. Ahora, cuando quiero volver a ingresar mas datos en esa hoja, los escribo y vuelvo a dar grabar, los datos anteriores simplemente son sustituidos.

    Su ayuda por favor con este caso, que debo decirle al visual Basic que haga para que grabe datos fila a fila y no sustituya nada.

    Gracias

Deja una respuesta

Los campos requeridos estan marcados con *.