Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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:
Este otro, será el código del botón que tiene por rótulo el texto "Grabar datos" (el CommandButton1):
'Protegemos la hoja
ActiveSheet.Protect
End Sub
'Desprotegemos la hoja
ActiveSheet.Unprotect
Range("B4").Select
ActiveCell.Offset(1, 0).Select
Loop
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)
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox1.SetFocus
'protegemos la hoja
ActiveSheet.Protect
End Sub
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
End Sub
End Sub
End Sub
End If
End Sub
End Sub