Detectar cambios en una hoja

Para Dante Amor.

Hola buen día.

Tengo el código para detectar cambios en una hoja y ponerlos en otra, ahora necesito saber como hago para que al eliminar un dato en la primera, lo elimine de la segunda.


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 100 Then Exit Sub
    If Target.Row = 1 Then Exit Sub
    If Not Intersect(Target, Range("B:B")) Is Nothing Then
        For Each c In Target
            Set h = Sheets("CARACTERISTICAS DEL PROYECTO")
            Set b = h.Columns("N").Find(c.Value, lookat:=xlWhole)
            If b Is Nothing Then
                u = h.Range("N" & Rows.Count).End(xlUp).Row + 1
                h.Cells(u, "N") = c.Value
            End If
        Next
    End If
End Sub

1 respuesta

Respuesta
2

H o l a:

Te anexo las macros, reemplaza la macro anterior por el siguiente código.

Public valor
Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    Dim c, h, b, u
    If Target.Count > 1 Then Exit Sub
    If Target.Row = 1 Then Exit Sub
    If Not Intersect(Target, Range("B:B")) Is Nothing Then
        For Each c In Target
            Set h = Sheets("CARACTERISTICAS DEL PROYECTO")
            If c = "" And valor <> "" Then
                Set b = h.Columns("N").Find(valor, lookat:=xlWhole)
                If Not b Is Nothing Then
                    b.Value = ""
                End If
            Else
                Set b = h.Columns("N").Find(c.Value, lookat:=xlWhole)
                If b Is Nothing Then
                    u = h.Range("N" & Rows.Count).End(xlUp).Row + 1
                    h.Cells(u, "N") = c.Value
                End If
            End If
        Next
    End If
End Sub
'
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 1 Then Exit Sub
    If Target.Row = 1 Then Exit Sub
    If Not Intersect(Target, Range("B:B")) Is Nothing Then
        If Target.Value <> "" Then
            valor = Target.Value
        End If
    End If
End Sub

La macro te permite solamente un valor, es decir, si borras una celda de la columna B, automáticamente se borrará en la otra hoja, pero si borras varios a la vez, no lo realizará.


'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Oye muchas gracias. Me queda una duda, como hago para que al eliminar el registro las tablas se reajusten solas.

H o  l a:

La macro solamente revisa una celda.

Si quiere borrar registros simultáneos en 2 hojas, te recomiendo que utilices un formulario, de esa forma estableces que registro quieres borrar, que lo busque en las 2 hojas y que lo borre en donde lo encuentre.

Si eso lo entiendo, mi duda es que al eliminar un registro me queda el espacio en blanco, necesitaría que la tabla se autoajustara para borrar todo el contenido de la celda que se borró.

La celda B8 fue la que borré y automáticamente se borra de la tabla 2, pero me deja esos espacios en blanco y al volver a ingresar un nuevo registro lo ubica debajo de la celda en blanco.

Lo ideal es que al borrar el dato en la tabla 1(arriba) se autoajuste la tabla y cuando se borre en tabla 2(abajo) también se autoajuste pero que borre todo el contenido de la fila.

Con mucho gusto te ayudo con todas tus peticiones.

Valora esta respuesta y crea una nueva pregunta en el tema de microsoft excel, en el desarrollo de la pregunta escribe: "para Dante Amor"

En la nueva pregunta revisamos tu archivo para ver cómo tienes la información y cómo quieres la ejecución.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas