Unidad 6. Creación de formularios de usuario (XVI)



Ejemplo 13

En este ejemplo se trata de usar un formulario para ingresar datos a través de un panel diseñado en el formulario hacia una hoja de un libro abierto. En particular, supongamos que se trata de ingresar el nombre de un producto, el precio unitario,  la cantidad y el monto de un posible descuento. En la hoja debe aparecer una columna en el cual se calcule el monto del IGV (18%) de las ventas. El formulario deberá ser activado desde una macro la cual se iniciará insertando una nueva hoja, dándole un nombre y colocando la cabecera de las columnas de datos.

Procedimiento

Usaremos los siguientes cuadros de control de formulario:

Control Nombre, caption
Formulario FrmPanel, Panel de datos
Comando CmdTransfiere, Transfiere
Comando CmdFin, Terminar
Cuadro de texto TxtProducto
Cuadro de texto TxtPrecio
Cuadro de texto TxtCantidad
Cuadro de texto TxtDescuento
Tres Etiquetas LblEtq1, LblEt2, LblEt3, LblEt4

Este será el módulo correspondiente a la macro:

Public Sub Inicio()

HojaName = InputBox("Nombre de la hoja a ser creada")

Sheets.Add

With ActiveSheet

    .Name = HojaName

End With

Range("A2") = "Nombre del producto"

Range("B2") = "Precio unit."

Range("C2") = "Cantidad"

Range("D2") = "Ventas"

Range("E2") = "I.G.V."

Range("F2") = "Descuento"

Range("G2") = "Venta neta"

FrmPanel.Show

End Sub

Al iniciarse la ejecución del formulario, el siguiente procedimiento permitirá hacer que el cuadro de texto para el nombre del producto quede activado y se inicialice un contador para las filas (NroDatos).

Private Sub UserForm_Click()

TxtProducto.Enabled = True

NroDatos = 0

End Sub

La siguiente imagen muestra el panel de datos (formulario)

Para mayor facilidad se puede ingresar los datos usando la tecla <Tab>. En el cuadro de texto para Descuento se debe ingresar 0 si no hay descuento. A continuación se debe hace clic en el botón <Transferir>. El siguiente es el procedimiento que le corresponde a este botón:

Private Sub CmdTransferir_Click()

NroDatos = NroDatos + 1

Cells(NroDatos + 2, 1) = TxtProducto.Text

Cells(NroDatos + 2, 2) = TxtPrecio.Text

Cells(NroDatos + 2, 3) = TxtCantidad.Text

Cells(NroDatos + 2, 4) = TxtPrecio.Value * TxtCantidad.Value

Cells(NroDatos + 2, 5) = Cells(NroDatos + 2, 4) * 0.18

Cells(NroDatos + 2, 6) = TxtDescuento.Text

Cells(NroDatos + 2, 7) = Cells(NroDatos + 2, 4) + Cells(NroDatos + 2, 5) - TxtDescuento.Value

TxtProducto.Text = ""

TxtPrecio.Text = ""

TxtCantidad.Text = ""

TxtDescuento.Text = ""

TxtProducto.SetFocus

End Sub

Abserve que luego de ingresar los datos y los valores calculados a celdas de la nueva hoja, los controles son puestos en blanco y con la última instrucción se vuelve activar el cuadro de texto Producto que, de otra manera, se tendría que hacer clic en dicho cuadro.

A continuación se muestra todos los procedimientos del formulario.

Dim NroDatos As Integer

Private Sub CmdFin_Click()

End

End Sub

Private Sub CmdTransferir_Click()

NroDatos = NroDatos + 1

Cells(NroDatos + 2, 1) = TxtProducto.Text

Cells(NroDatos + 2, 2) = TxtPrecio.Text

Cells(NroDatos + 2, 3) = TxtCantidad.Text

Cells(NroDatos + 2, 4) = TxtPrecio.Value * TxtCantidad.Value

Cells(NroDatos + 2, 5) = Cells(NroDatos + 2, 4) * 0.18

Cells(NroDatos + 2, 6) = TxtDescuento.Text

Cells(NroDatos + 2, 7) = Cells(NroDatos + 2, 4) + Cells(NroDatos + 2, 5) - TxtDescuento.Value

TxtProducto.Text = ""

TxtPrecio.Text = ""

TxtCantidad.Text = ""

TxtDescuento.Text = ""

TxtProducto.SetFocus

End Sub

Private Sub UserForm_Click()

TxtProducto.Enabled = True

NroDatos = 0

End Sub

Noviembre-2010
Pág. 6.16

Atrás  Inicio  Adelante





Página inicial  Cursos Informática Gratuitos

Síguenos en:   Facebook       Sobre aulaClic            Política de Cookies