Sei sulla pagina 1di 5

Introducir datos utilizando un formulario

Una de las formas más vistosas para introducir datos en una hoja de cálculo, es utilizando un formulario. Cuando usamos esta técnica, a
través del uso de un UserForm, le pedimos al usuario que introduzca una serie de datos, y una vez cumplimentado todo, se graban en la hoja de
cálculo, en la línea que le corresponda. Si la primera celda vacía es la B14, pues será en esa celda donde empezaremos a escribir. Si la primera celda
vacía es la J4, pues será esa la celda elegida.

De la misma forma que digo que es una forma vistosa de introducir datos, también he de decir que es una de las formas menos útiles de introducir
datos en una hoja de cálculo, pues es mucho más rápido hacerlo directamente sobre la celda donde queremos escribir, que sobre un formulario. Eso
sí, si los datos a introducir son pocos, puede sernos de cierta utilidad.

Vamos a ver como funciona la entrada de datos en una hoja de cálculo, a través de un formulario, utilizando un sencillo ejemplo para llevar un
control de compras. Solicitaremos el nombre del producto, la cantidad, y el precio unitario. El sistema nos calculará el total, y grabaremos todos los
datos en la primera fila vacía.

Una vez hecho el formulario con sus correspondientes Label y TextBox, así como los dos botones, nos bastará con introducir el código VBA. Para
ello, lo primero que haremos será proteger la hoja, al arrancar el libro, utilizando el macro Auto_open():

Sub Auto_open()
'Protegemos la hoja
ActiveSheet.Protect
End Sub

Este otro sencillo macro nos lanzará el formulario:

Sub introducir_datos()
'llamamos al formulario
UserForm1.Show
End Sub

Ahora dentro del UserForm (recordemos que los dos macros anteriores deben estar en un módulo VBA), introduciremos estos otros procedimientos.
El primero de ellos evalúa si estamos cambiando el TextBox3, para calcular el total, siempre y cuando el TextBox2 y el TextBox3 sean datos
numéricos:

Private Sub TextBox3_Change()


'si hay errores, que continúe
On Error Resume Next
'Cuando cambiemos el TextBox3 (precio unitario)
'miraremos si hay datos también en el TextBox2 (cantidad)
'para multiplicar ambos datos, siempre que sean números
If TextBox2 <> "" And IsNumeric(TextBox2) And _
TextBox3 <> "" And IsNumeric(TextBox3) Then
TextBox4 = TextBox2 * TextBox3
End If
End Sub

Este otro, será el código del botón que tiene por rótulo el texto "Grabar datos" (el CommandButton1):

Private Sub CommandButton1_Click()


'Desprotegemos la hoja
ActiveSheet.Unprotect
'Nos situamos al principio
Range("B4").Select
'Bajamos hasta encontrar la fila vacía
Do While Not IsEmpty(ActiveCell)
'Bajamos una fila
ActiveCell.Offset(1, 0).Select
Loop
'grabamos los datos en la primera fila vacía
'primero el nombre del producto
ActiveCell = TextBox1
'ahora la cantidad
ActiveCell.Offset(0, 1) = CDbl(TextBox2)
'ahora el precio unitario
ActiveCell.Offset(0, 2) = CDbl(TextBox3)
'ahora el total
ActiveCell.Offset(0, 3) = CDbl(TextBox4)
'limpiamos los textbox
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
'ponemos el focus en el TextBox1
TextBox1.SetFocus
'protegemos la hoja
ActiveSheet.Protect
End Sub

Y este es el código del botón que borra el contenido de los TextBox:

Private Sub CommandButton2_Click()


'borramos los datos
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
End Sub
Sub Auto_open()

'Protegemos la hoja

ActiveSheet.Protect

End Sub

Private Sub CommandButton1_Click()

'Desprotegemos la hoja

ActiveSheet.Unprotect

'Nos situamos al principio

Range("B4").Select

'Bajamos hasta encontrar la fila vacía

Do While Not IsEmpty(ActiveCell)

'Bajamos una fila

ActiveCell.Offset(1, 0).Select

Loop

'grabamos los datos en la primera fila vacía

'primero el nombre del producto

ActiveCell = TextBox1

'ahora la cantidad

ActiveCell.Offset(0, 1) = CDbl(TextBox2)
'ahora el precio unitario

ActiveCell.Offset(0, 2) = CDbl(TextBox3)

'ahora el total

ActiveCell.Offset(0, 3) = CDbl(TextBox4)

'limpiamos los textbox

TextBox1 = ""

TextBox2 = ""

TextBox3 = ""

TextBox4 = ""

'ponemos el focus en el TextBox1

TextBox1.SetFocus

'protegemos la hoja

ActiveSheet.Protect

End Sub

Private Sub CommandButton2_Click()

'borramos los datos

TextBox1 = ""

TextBox2 = ""

TextBox3 = ""

TextBox4 = ""

End Sub

Private Sub Label1_Click()

End Sub

Private Sub TextBox1_Change()

End Sub

Private Sub TextBox3_Change()


'si hay errores, que continúe

On Error Resume Next

'Cuando cambiemos el TextBox3 (precio unitario)

'miraremos si hay datos también en el TextBox2 (cantidad)

'para multiplicar ambos datos, siempre que sean números

If TextBox2 <> "" And IsNumeric(TextBox2) And _

TextBox3 <> "" And IsNumeric(TextBox3) Then

TextBox4 = TextBox2 * TextBox3

End If

End Sub

Private Sub TextBox4_Change()

End Sub

Potrebbero piacerti anche