Botón modificar y eliminar excel

Gracias a esta página ya creee en parte lo que quiero, explico: cree un libro con las hojas ingreso, búsqueda, etc ; en la hoja ingreso lleno los campos CI ; nombre ; apellido ; dirección ; teléfono y otros más ; hice un botón guardar que envía todos los datos a la hoja registro, en la hoja búsqueda ingreso el CI y me muestra todos los demás datos; todo bien hasta aquí, el problema es que lo que falta es que en la hoja búsqueda cuando me muestre los datos del CI tenga la posibilidad de modificar estos campos mediante un botón modificar y también que con un botón elimine la fila correspondiente al CI, si se puede alguien me puede ayudar, muchas gracias. Perdón si me explique mal pero trate de hacer lo mejor posible.

1 respuesta

Respuesta
1
A ver si comprendí. ¿En la hoja buscar tu debes tener una celda en donde pones el CI y mediante fórmula o macro te trae ciertos datos( a tu hoja buscar) . Ahora tu deseas modificar esos datos extraídos?. Pues si es así, ¿debes modificarlos en la hoja en donde se alojan (hoja de ingreso) o deseas modificarlos en la hoja buscar?.
Si es tal como dices, los campos de todos los ingresos se ordenan en la hoja registros y esa hoja la dejare oculta para que los usuarios no puedan borrar por equivocación los datos, la idea es que los usuarios puedan modificar los datos de los registros guardados y volver a grabarlos o eliminarlos si corresponde el caso, en la hoja buscar.
Ok.
Entonces de igual manera los usuarios modificaran los registros de la hoja "registros", pero claro de uno en uno. Bien, entonces lo que debes hacer es que cuando el usuario ingresa el CI y presiona buscar, ademas de traer los datos de la consulta, también te traiga las referencias de la posición en que se encuentra en la hoja Registros ( es decir Fila y columna), teniendo la posición, luego solo debes tomar el registro modificado y reemplazarlo en la hoja registros, puedes utilizar el método
Range(). Value=nuevo valor del registro ' para guardar el registro modificado
ahora no se como estas realizando la búsqueda del registro, si es mediante función BuscarV o Buscar, puedes recuperar fácilmente el valor de la columna, ya que en la fórmula tu especificas este valor, pero el número de fila es complejo, para salvar ese problema, te sugiero ( si ese es el caso), que añadas un número de indice a tus registros, un número correlativo del 1 al n... que debe ser el mismo número de la fila, ahora bien, este indice cambiara cuando el usuario elimine un registro, pero patra ello podrías crear un macro de indexación que recorra los registros al final de cada evento eliminar, así va actualizando el rango de datos.
Bueno, es una idea.
Es muy buena idea, me gusto, ahora en la hoja registros a1 tendrá el CÓDIGO CORRELATIVO, b1 el CI, c1 el NOMBRE y así el siguiente campo y el siguiente, yo ocupe el buscarv para encontrar los datos ahora me puedes dar un ejemplo de como seria lo que me dices, muchas gracias.
Ok.
Pues bien, primero debes declarar una variable para pasarle el valor de la fila con el id del registro
por ejemplo Dim i as integer
cuando ejecutas el método buscar y obtienes el id del registro se lo pasas a la variable i
luego de realizar las modificaciones en tu formulario, debes pasar el nuevo valor a la celda del campo modificado en la hoja Registro
por ejemplo si cambiaste el CI del registro fila 5 entonces en el evento clic de tu botón modificar pones:
Hojaregistro.range("B" & i).select
Hojaregistro.range("B" & i).Value=Textbox  ' (el texbox debe ser aquel que tiene el registro modificado de tu form)
Claro que debes repetir este cod tantas lineas como campos tenga tu registro, por ejemplo respetando la estructura que tu indicas, para pasar por todos los campos del registro ponemos
Hojaregistro.range("B" & i).select
Hojaregistro.range("B" & i).Value=Textbox
Hojaregistro.range("C" & i).select
Hojaregistro.range("C" & i).Value=Textbox
Hojaregistro.range("D" & i).select
Hojaregistro.range("D" & i).Value=Textbox
etc, hasta la última columna que conforme tu "base de datos"
Una vez que pasaste por todos los campos, aplicas el script que limpie tu form
ahora si eliminas una fila, por ejemplo seria:
Hojaregistro. Activate
Hojaregistro. Range(i).Select   ' seleciona la fila segun el id pasado a la variable i
Selection.Delete Shift:=xlUp  ' elimina la fila selecionada
Hojaregistro. Range("A2").Select  ' pasamos a celda A2 para deselecionar la fila
luego de realizar esta operación debes realizar la actualización delos ID de las filas, podria ser
    Hojaregistro. Activate
    Hojaregistro.Range("A2").Select
    ActiveCell.Value = 1
    Selection.AutoFill Destination:=Hojaregistro.Range("A2:A65536"), Type:=xlFillSeries
con este script actualizas correlativo desde la celda A2 hasta la última celda de columana A.
Bueno eso seria, ahora es cuestión de adaptarlo a tu proyecto
Bye

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas