EJEMPLO DE USERFORM PARA REGISTRO DE FACTURAS
Los formularios en Excel son un método para ingresar datos a nuestras hojas y son de mucha utilidad porque nos ayudan a evitar errores en la captura de información
En este caso elaboraremos un userform que nos permita registrar facturas de los proveedores de un
Supermercado, teniendo en cuenta los siguientes variables:
- Tipo de proveedor
- Nombre del proveedor
- Número de factura
- Moneda en que se pagará la factura.
- Monto de la factura
En cuanto al tipo de proveedor, la persona que ingresará la factura tendrá para elegir dos opciones: proveedor nacional o proveedor extranjero.
Para el caso del nombre de proveedor, éste podrá ser elegido de una lista de proveedores ya ingresados en el sistema.
La moneda en que se pagará la factura también estará predeterminada, pudiendo elegir entre soles, dólares y euros.
Comencemos con el desarrollo del formulario:
Lo primero que hacemos es crear en el archivo un botón de comando que esté asignado al formulario a ser llenado.
Para esto es necesario ir a PROGRAMADOR/INSERTAR/CONTROLES ACTIVEx/ BOTÓN DE COMANDO
(Para mayor visualización de la imagen, hacer click en la misma)
Luego ingresamos un código en el Botón de comando que permita que al hacer click sobre éste se muestre el Formulario.
(Para mayor visualización de la imagen, hacer click en la misma)
El código a ingresar es el siguiente:
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
También insertamos códigos que permitan mostrar mensajes de bienvenida y de salida:
Private Sub registrodedatos_Open()
MsgBox "Supermercados Eroski le da la bienvenida, por favor ingrese los datos."
End Sub
Private Sub registrodedatos_Deactivate()
MsgBox "Supermercados Eroski,precios más bajos siempre."
End Sub
El formulario a utilizarse tiene un aspecto así:
(Para mayor visualización de la imagen, hacer click en la misma)
Tengamos en cuenta que:
CommandButton1 ---> Actualizar tipo de proveedor
OptionButton1 ---> Nacional
OptionButton2 ---> Extranjero
TextBox1 ---> Almacena Tipo de Proveedor seleccionado
ComboBox1---> Almacena lista de proveedores
CommandButton2---> Actualizar Proveedor
TextBox2 ---> Almacena Proveedor seleccionado
TExtBox3 ---> Almacena número de factura.
ComboBox2---> Muestra moneda en que se puede pagar la factura (soles, dólares, euros).
TextBox4---> Almacena monto de la factura a registrar
CommandButton3 ---> Graba todos los datos registrados en la hoja Base de Datos
CommandButton4 --> SALIR
Los códigos de programación utilizados son los siguientes:
Private Sub CommandButton1_Click()
If OptionButton1.Value = True Then
TextBox1.Text = OptionButton1.Caption
End If
If OptionButton2.Value = True Then
TextBox1.Text = OptionButton2.Caption
End If
End Sub
Private Sub CommandButton2_Click()
TextBox2.Text = ComboBox1.Text
End Sub
Private Sub userform_activate()
ComboBox1.Clear
ComboBox1.AddItem ("LAIVE")
ComboBox1.AddItem ("SHEARVAN")
ComboBox1.AddItem ("BACKUS")
ComboBox1.AddItem ("NESTLE")
ComboBox1.AddItem ("REDFIELD")
ComboBox1.AddItem ("BIMBO")
ComboBox1.AddItem ("COLGATE PALMOLIVE")
ComboBox1.AddItem ("PROCTER&GAMBLE")
ComboBox1.AddItem ("FLORIDA")
ComboBox1.AddItem ("GLORIA")
ComboBox1.AddItem ("SUAVE")
ComboBox1.AddItem ("IPHOIDEAS")
ComboBox1.AddItem ("QUIRCH FOODS")
ComboBox1.AddItem ("KRAFT FOODS")
ComboBox1.AddItem ("LINDLEY")
ComboBox1.AddItem ("CLOROX")
ComboBox2.Clear
ComboBox2.AddItem ("PEN")
ComboBox2.AddItem ("USD")
ComboBox2.AddItem ("EUR")
End Sub
Private Sub CommandButton3_enter()
Sheets("Base de datos").Select
Range("A2").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell = TextBox1
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox2
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = ComboBox2.Value
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox3
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox4
ActiveCell.Offset(0, 1).Select
TextBox1 = Empty 'textbox1, dejar en blanco
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
TextBox5 = Empty
MsgBox "REGISTRO FINALIZADO" 'mostrar el mensaje "REGISTRO FINALIZADO"
End Sub
Private Sub CommandButton4_Click()
Sheets("Principal").Select
UserForm1.Hide
End Sub
16/02/2013 a las 11:16 pm
Buenas
Muy buen codigo, sin embargo aun no me queda muy claro, la parte de cambio a proveedores. ¿En el código final ´´OptionButton1.Caption´´ es representado como ´´NACIONAL.Caption´´?
Saludos
17/02/2013 a las 10:10 pm
Tambien se puede escribir el procedimiento del combo box1 con with; es mas beneficioso, en caso cambies de combo obx solo cambias el texto de una linea y no de todo el procedimiento:
ComboBox1.Clear
With ComboBox1
.AddItem (“LAIVE”)
.AddItem (“SHEARVAN”)
.AddItem (“BACKUS”)
.AddItem (“NESTLE”)
.AddItem (“REDFIELD”)
.AddItem (“BIMBO”)
....(Continua la Lista)
End With
21/02/2013 a las 10:12 am
excelente!!!pueden enviar el archivo
02/06/2013 a las 1:28 am
Buenos dias
Tengo dos consultas :
Como hago para señalar en combobox1 varios datos de una columna sin contar las celdas en blanco.
Otra duda, una vez señalado el dato en combobox1, quiero que automaticamente se llenen algunos cuadros de texto con datos de las celdas que están al costado derecho del dato señalado en el combobox1. Asimismo, quiero que se llene un cuadro de imagen con el archivo correpondiente al dato señaldao en el combobox1.
04/08/2013 a las 10:23 pm
Estoy tratando de realizar el ejemplo para poder entender el procedimiento, pero contiene algunos errores. Me pueden decir que error existe en esta linea
Sheets("Base de datos").Select
Muchas gracias.
26/11/2013 a las 5:35 pm
Tienes que tener la hoja Base de Datos creada con anterioridad para que puedas seleccionarla así. Pero te aconsejo que no le pongas espacio al nombre de tus hojas. Ponle mejor BaseDeDatos a tu hoja y así seleccionala.
13/01/2014 a las 12:15 am
BUEN APORTE AMIGO
AYUDA : tengo una bade de datos de precios con sus totales y quiero q estos (TOTALES) se muestren en varios Label de un formulario userform.
Ya lo hice pero hay un PROBLEMA : en los Labels me mueztra los datos sin formato ASI: ( 1450 ) ( 580 ) ( 10450.1 )
Yo los quiero ASI: ( S/. 1,450.00 ) ( S/. 580.00 ) y ( S/. 10,450.10 ) y alineado a la izquierda
AYUDA PORFAVOR Soy Novato en esto
Sub LanzarFormulario()
frmMostrarDatos.Label1.Caption = Sheets("Presupuesto").Range("E18").
fmrMostrarDatos.Show
End Sub
Quiero q me de formato de moneda o que lo muestre tal como esta en la celda
GRACIAS Espero su ayuda
02/07/2014 a las 3:01 pm
Buena información, si no necesito usar el userforms, sino hacer una plantilla en Excel que me capture datos y registre en otra hoja(No quiero usar el grabador de macros ) como se procedería, para la captura de datos hay mucha explicación pero usando userforms y grabador de macros, quiero el código VB el procedimiento, imagino que es similar al userforms pero quiero mas información.
09/07/2014 a las 9:59 pm
GRACIAS POR TAN IMPORTANTE INFORMACIÓN, REALMENTE SON MUY VALIOSOS CADA UNO DE SUS APORTES.
BENDICIONES,
13/07/2015 a las 7:12 pm
Hola, quisiera que me ayudaras, estoy diseñando un sistema similar, solo que el que estoy diseñando es para ordenes de trabajo y cotizaciones, el problema es que llevo un registro de cada orden y cotización que hago, por lo tanto llevan un numero de registro y necesito que cada vez que realice una nueva se ponga un nuevo registro, por ejemplo: si tengo 19 ordenes y hago una nueva se ponga en automático el registro 20, espero me puedas ayudar
11/05/2018 a las 10:24 am
Me podrian enviarme esta aplicacion por favor
Userform aplicado al registro de facturas
20/10/2019 a las 4:51 am
Hola, estoy buscando el mismo procedimiento, pero a la Inversa, es decir, desde la base de datos donde esta la Información de la Factura Hasta el userform donde se hará la consulta de toda la factura...