Formularios para ingreso de datos hacia una hoja

El último formulario que hemos desarrollado nos permite ingresar los datos de una venta como son Nombre del producto, cantidad vendida y precio unitario; cada uno en un cuadro de texto. Luego del cual, lo transferíamos a otros cuadros de texto que funcionaban como salida.

Lo que ahora queremos hacer es transferir los datos ingresados hacia una hoja del Excel a fin de generar una lista o tabla de ventas.

Cargue a memoria el Excel y usando [Alt]+F11 vaya al editor e inserte un formulario.

Modifiquemos algunas de sus propiedades en la [Ventana de propiedades]. Estando seleccionado el formulario, haga clic en su [Name] digite MiForm03 y que su [Caption] sea “Panel de ingreso de ventas”. Haciendo clic en [BackColor] cambie el color de fondo al color que Ud. desee. Haga clic en [Font], despliegue la lista (clic en …) y seleccione como [Fuente] a Times New Roman, [Tamaño de fuente>, 12, luego clic en [Aceptar].

Inserte tres botones de [Cuadro de texto] y un [Botón de comando] todos a la misma altura. Si fuera necesario, amplíe el formulario hacia la derecha. Inserte también dos botones de comandos en la parte inferior.

- Seleccione el primer cuadro de texto. Clic en su [Name], digte TxtNomProd. Su [TabIndex] debe ser 0.

- Seleccione el segundo cuadro de texto. Clic en su [Name], digte TxtCantidad. Su [TabIndex] debe ser 1.

- Seleccione el tercer cuadro de texto. Clic en su [Name], digte TxtPrUnit. Su [TabIndex] debe ser 2.

- Seleccione el primer botón de comando. Clic en su [Name], digte CmdOk. Su [TabIndex] debe ser 3. Clic en su [Caption] y digite “Ok”.

- Seleccione el segundo botón de comando (parte inferior izquierda), su [Name] debe ser CmdNuevo y su [Caption], Nuevo.

- Seleccione el tercer botón de comando (parte inferior derecha), su [Name] debe ser CmdFin y su [Caption], Aceptar.

Ahora inserte una etiqueta para cada uno de los cuadros de texto colocándolos encima de ellos, como hicimos en la sección anterior. La propiedad [Caption] de ellos debe ser “Nombre del producto”, “Cantidad” y “Pr. Unitario”, respectivamente. El formulario debe quedar como se muestra en la primera imagen adjunta.

Ahora volvamos al Excel. Inserte una nueva hoja y haga que su nombre sea “Ventas”. Esta tendrá la plantilla que se muestra en la segunda imagen adjunta.

Observe que la columna A se ha reducido a su mínima amplitud y no se usa en el formato. Hacia esta hoja transferiremos los datos ingresados en el formulario MiForm03. Las columnas Venta y Venta Neta se calcularán durante la transferencia.

La primera venta que se ingrese, debe almacenarse en la fila 5.

La segunda venta debe ser guardada en la fila 6 y así sucesivamente. Para pasar de una fila a otra necesitamos una variable que actúe como contador. Pero las ventas no sólo se van a ingresar una sola vez; se ingresarán en varias ocasiones y, por tanto, las filas de los datos deben seguir incrementándose; es decir, en la siguiente oportunidad que se ingrese nuevas ventas, se debe continuar en la siguiente fila vacía.

Esto significa que, la variable usada como contador, debe almacenarse en una celda y, cada vez que se desea guardar nueva venta, se cogerá este valor, se transferirán los datos, se aumentará el valor del contador y este se guardará en la misma celda.

Para esto usaremos la celda A1, que, como puede ver no llegará a tener ningún dato.

Algo más, como en el futuro estos datos deben constotuir una tabla para obtener consolidaciones o tabla dinámica, el rango de datos debe tener un nombre. Seleccione el rango B4:F5 y le daremos el formato de tabla usando [Inicio] – [Dar formato de tabla]. Usando [Datos] desactive [Filtro]. Nuevamente seleccione el rango B4:F5, usando [Fórmulas] – [Nombres] – [Asignar nombre] digite TablaVentas.

No debemos olvidar que, cada vez que ingresemos nuevos datos, el libro deberá ser guardado. Ya estamos listos para pasar a la codificación. Antes guardemos el libro con el nombre RegVentas.xlsm habilitado para macros.

Como el formulario está en el libro RegVentas, mediante una macro activaremos el RegVentas.xlsm y seleccionaremos la hoja Ventas; luego del cual mostraremos el formulario. Por tanto, insertemos un módulo en donde colocaremos el siguiente procedimiento:

Sub FVentas()

Workbooks("RegVentas.xlsm").Activate
Sheets("Ventas").Select
MiForm03.Show
End Sub
 

En la hoja “Hoja1”, usando [Programador o Desarrollador] – [Controles] – [Insertar] – [Botón (de formulario)]. Despliegue un recuadro en la celda E4 (o cualquier otro sitio). Al soltarlo, asigne la macro FVentas y clic en [Aceptar]. Que su [Caption] sea “Ingreso de datos”.

Vayamos al Editor.

Vamos a programar los botones de comando:

Haga doble clic en el botón [Ok]. Su contenido:

Private Sub CmdOk_Click()
' Primero recuperamos el nro de la fila vacía
iX = Range("A1")
' Guardamos el contenido de cada cuadro de texto en una columna
Cells(iX, 2) = Trim(TxtNomProd.Text)
Cells(iX, 3) = Trim(TxtCantidad.Text)
Cells(iX, 4) = Trim(TxtPrUnit.Text)
' Los cálculos el las siguientes columnas
Cells(iX, 5) = Val(TxtCantidad.Text) * Val(TxtPrUnit.Text)
Cells(iX, 6) = Val(TxtCantidad.Text) * Val(TxtPrUnit.Text) + Val(TxtCantidad.Text) * Val(TxtPrUnit.Text) * 0.18
' Aumentamos el número de la fila vacía en uno
iX = iX + 1
' Lo guardamos en su misma celda, A1
Range("A1") = iX
' Guardamos el libro para no perder lo ingresado
ActiveWorkbook.Save
End Sub

Haga doble clic en el botón [Nuevo]. Su contenido:
Private Sub CmdNuevo_Click()
TxtNomProd.Text = ""
TxtCantidad.Text = ""
TxtPrUnit.Text = ""
TxtNomProd.SetFocus
End Sub
 

Finalmente, programemos el botón . Como ahora, al dar por terminado el ingreso de datos, el libro debe quedar grabado y cerrado, cerraremos el libro y luego daremos por terminado el formulario. El código es el siguiente:

Private Sub CmdFin_Click()

ActiveWorkbook.Close
End
End Sub
 

Para ver el libro con todo lo trabajado en esta sesión, haga clic aquí

En la siguiente sesión veremos el uso de Cuadro combinado en un formulario

Para seguir, haga clic aquí