En la entrega anterior, apredimos a eliminar elementos de una tabla con VBA. En esta última entrega, haremos la última parte del CRUD: la modificación de un elemento, para ello, reutilizaremos algunas cosas de los formularios anteriores ¡Presionemos Alt + F11 para regresar a Visual Basic, es hora de trabajar!
Tabla de Contenido
Reciclemos algunos elementos
Vamos a reutilizar la ventana de eliminar que hicimos en la entrega anterior. Para eso, presionamos el botón derecho del ratón sobre el formulario llamado frmBaja y seleccionamos Exportar archivo.
Guardamos el archivo con el nombre frmCambios en la carpeta donde estemos trabajando.
Busquemos el archivo, lo seleccionamos y con el botón derecho del ratón obtenemos la opción Abrir con.
Vamos a editarlo con cualquier software de edición sencilla, por ejemplo: Wordpad.
Dentro del código generado por Excel, vamos a cambiar lo siguiente: el nombre interno del formulario (VB Name) de frmBaja a frmCambios, y al Caption que será “Actualizar Personas”. Observe la imagen con los cambios:
Guarde los cambios y regrese a Excel, es hora de importar el archivo. En la sección Formularios de nuestro proyecto, presionamos el botón derecho y elegimos Importar archivo.
Busquemos nuestro formulario, justo donde lo dejamos la última vez.
Y ahora ya forma parte del proyecto.
Modificando la parte reciclada
Es hora de abrir el formulario reciclado. Con un doble click lo abrimos y cambiemos la propiedad Caption de la etiqueta y el botón de comando.
Por los valores que muestra que se muestra a continuación:
Ahora, con un doble click al botón Modificar, es hora de ajustar el código. No vamos a borrarlo, solamente eliminaremos lo que no necesitemos. Ajustemos el código hasta que nos quede como sigue:
Hay que añadir el formulario de edición individual
Por supuesto, necesitamos el formulario para cada registro individual. En la sección Formularios de nuestro Administrador de proyectos, presionamos el botón derecho y seleccionamos Insertar, luego UserForm.
nuestro nuevo formulario se llamará frmCambiosIndividual y su propiedad Caption la establecemos a “Edición individual de datos”.
Necesitamos una variable de tipo Global para manipular el registro hallado, será un Integer con la posición del registro dentro de la tabla. Con un doble click en el único módulo que tenemos, añadimos el siguiente código:
Global hallado as Integer
Debe quedar justo arriba de todo el código que ya tiene nuestro módulo.
Regresemos al formulario que reciclamos, es hora de cambiar algunas cosas dentro del botón Modificar. Concretamente, necesitamos pasar el número de fila del registro encontrado de nuestro formulario a la variable global.
hallado = f
La variable f precisamente tiene ese número. Observe donde añadimos ese cambio:
Esto significa que la variable hallado debe tener un valor entero mayor a cero cuando hemos seleccionado un registro en nuestra ventana. Si esto es cierto, entonces necesitamos llamar a nuestro formulario individual y cerrar el actual.
if hallado > 0 then
Unload me 'Cierra el formulario actual
frmCambiosIndivisual.show 'Muestra el individual
end if
Esto lo haremos, justo al terminar el for, es decir, debajo de la instrucción Next.
Editando el fornulario individual
El formulario individual será de hecho, bastante similar al de Alta. Entonces, vamos a buscar el formulario de Alta (frmAlta) y nos copiamos todos sus objetos.
Y los pegamos en nuestro formulario individual (frmCambiosIndividual)
Lo primero que vamos a hacer en este formulario, es programar el método Activate del mismo. Este método se ejecuta cada vez que el formulario esta activo, es decir, frente a nuestros ojos y sin nada le estorbe o bloquee.
Creamos las variables para los campos de nuestro registro.
Dim nombre, sexo, telefono as String
Dim edad as Integer
Y les asignamos el registro hallado, usando la colección DataBodyRange de la tabla llamada “datos”, es importante notar que todo esto debe ir dentro de un Trim, ya que en algunas ocasiones Excel añade un pequeño espacio en blanco extra a los objetos de esta colección.
nombre = Trim(Hoja1.ListObjects("datos").DataBodyRange(hallado, 1))
edad = Trim(Hoja1.ListObjects("datos").DataBodyRange(hallado, 2))
sexo = Trim(Hoja1.ListObjects("datos").DataBodyRange(hallado, 3))
telefono = Trim(Hoja1.ListObjects("datos").DataBodyRange(hallado, 4))
Y luego pasamos el contenido de las variables, a los objetos:
txtNombre.Text = nombre
cmbEdad.Value = edad
cmbSexo.Value = sexo
txtTelefono.Text = telefono
Así nos debe quedar el código:
Para nuestro botón de Guardar datos, vamos a copiar el mismo código que tiene ese botón en el formulario frmAlta.
Y lo pegamos en el mismo botón pero dentro del formulario frmCambiosIndividual, le haremos algunos cambios mínimos, observe como debe quedar el código copiado:
Hagamos los cambios. Lo primero, es recuperar los datos de los objetos hacia las variables.
nombre = txtNombre.Text
edad = cmbEdad.Value
sexo = cmbSexo.Value
telefono = txtTelefono.Text
Definimos el objeto ListRow con el dato hallado.
Set fila = Hoja1.ListObjects("datos").ListRows(hallado)
Actualizamos cada columna con su dato correspondiente.
fila.Range(1).Value = nombre
fila.Range(2).Value = edad
fila.Range(3).Value = sexo
fila.Range(4).Value = telefono
Eliminamos el objeto ListRow de la memoria, ya que terminamos de usarlo. También enviamos el mensaje de confirmación.
Set fila = Nothing
MsgBox "¡Registro Actualizado, gracias!"
Limpiamos los objetos utilizados y cerramos el formulario.
txtNombre.Text = ""
cmbEdad.ListIndex = 0
cmbSexo.ListIndex = 0
txtTelefono.Text = ""
Unload Me
Este es el resultado.
Agregando la opción de Modificar a la Cinta de Opciones
Estamos cerca de finalizar. Igual que las otras opciones que fueron creadas en las pasadas entradas, necesitamos un botón personalizado en la Cinta de Opciones. Los primero es crear la subrutina en el módulo único que tenemos. Le llamaremos MostrarCambios.
Sub MostrarCambios()
frmCambios.show
End Sub
Así debe quedar:
En nuestra Cinta llamada Personas, presionamos el botón derecho del ratón y elegimos Personalizar la Cinta de Opciones.
En la sección Comandos disponibles en, elegimos Macros. En la sección Pestañas principales seleccionamos CRUD.
Ahora, seleccionamos nuestra subrutina MostrarCambios y presionamos el botón Agregar.
Una vez añadida, la seleccionamos del otro lado y presionamos el botón Cambiar nombre.
El Nombre para mostrar será “Cambiar información”, elegimos un ícono de nuestra preferencia, y presionamos Aceptar.
De regreso a la ventana anterior, presionamos Aceptar nuevamente y con eso ya tenemos nuestro menú completo.
¡Es hora de probarlo todo!
Veamos el resultado de todo nuestro trabajo en acción (No olvide poner el video en fullscreen)
¿Te ha resultado? Déjanos saber en los comentarios aquí abajo, en nuestra cuenta de twitter @cablenaranja7 o en nuestra página de facebook.
Docente, IT Manager, Blogger & Developer. Escribo por diversión, educo por pasión. | Grandstanding is not my thing.