Macro para que al seleccionar una fila filtrada que contiene datos me envíe a la fila origen donde se encuentra la información

Tengo un libro con 4 hojas en la primera hoja(Buscar) exactamente en la celda D1 yo escribo una palabra y le doy buscar y me muestra todas las filas que contiene esa palabra y esta información la extrae de la hoja 3(Folios Marítimos). Entonces cuando yo quiero corregir algún dato tengo que irme a la hoja 3(Folios Marítimos) y buscar esa celda que yo quiero modificar, lo que quiero es que la macro me haga lo siguiente cuando yo me posicione en una fila con los datos filtrados de la hoja1 (Buscar)tenga la opción de darle click en un botón de comando y me direccione exactamente en la fila origen donde se encuentra la información y ya no tener que buscarla una por una en todas las filas. Menciono que en la hoja 1(Buscar) ya tengo dos botones de comando uno es para Buscar y otro es para limpiar datos de la búsqueda entonces quiero agregarle otro botón de editar para que al seleccionar una fila y darle editar me mande a la hoja3(Folios Marítimos). A ver si me explique bien.

1 respuesta

Respuesta
1

En las filas que se muestran en tu hoja "Buscar", a cada fila hay que agregarles el número de fila que tienen en la hoja "Folios Marítimos", para eso tendría que ver cómo tienes la macro que hace la búsqueda.

Puedes poner la macro para revisarla.

Que tal dante este es la macro que tengo en un modulo y la llamo con un botón de comando que tengo en la hoja 1(Buscar)

Sub Buscar()
'
Application.ScreenUpdating = False
Set h1 = Sheets("Buscar")
Set h2 = Sheets("Folios Maritimos")
'
If Range("D1") = "" Then Exit Sub
Range("D1") = UCase(Range("D1"))
fil = 2
'
For I = 3 To h2.Range("G" & Rows.Count).End(xlUp).Row
cadena = UCase(h2.Range("B" & I) & h2.Range("C" & I) & h2.Range("G" & I))
If InStr(cadena, h1.Range("D1")) > 0 Then
fil = fil + 1
h2.Range("A" & I & ":P" & I).Copy h1.Cells(fil, "A")
End If
Next I
Application.ScreenUpdating = True
End Sub

Cambiar tu macro de buscar por esta:

Sub Buscar()
'Act.Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("Buscar")
    Set h2 = Sheets("Folios Maritimos")
    '
    If Range("D1") = "" Then Exit Sub
    Range("D1") = UCase(Range("D1"))
    fil = 2
    u = h1.Range("G" & Rows.Count).End(xlUp).Row
    If u < 3 Then u = 3
    h1.Range("A3:Q" & u).ClearContents
    '
    For i = 3 To h2.Range("G" & Rows.Count).End(xlUp).Row
        cadena = UCase(h2.Range("B" & i) & h2.Range("C" & i) & h2.Range("G" & i))
        If InStr(cadena, h1.Range("D1")) > 0 Then
            fil = fil + 1
            h2.Range("A" & i & ":P" & i).Copy h1.Cells(fil, "A")
            h1.Cells(fil, "Q") = i
        End If
    Next
    Application.ScreenUpdating = True
End Sub

Ahora pon la siguiente macro en los eventos de tu hoja "buscar"

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Por.Dante Amor
    Application.ScreenUpdating = False
    f = Cells(Target.Row, "Q")
    c = Target.Column
    If f > 0 Then
        Sheets("Folios Maritimos").Select
        Sheets("Folios Maritimos").Cells(f, c).Select
    End If
    Application.ScreenUpdating = True
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(Buscar)
  4. Del lado derecho copia la macro

Saludos. Dante Amor

Que tal Dante si funciono la macro nada más que no me muestra la celda tengo que buscarla y me gustaría que lo pudiera controlar con un botón de comando, aclaro que ya tengo el botón nada más me faltaría la macro. Te anexo una imagen para mayor referencia

Entonces quita la macro de los eventos de worksheet

Y pon la siguiente macro en tu botón de editar

Sub editar()
'Por.Dante Amor
    Application.ScreenUpdating = False
    f = Cells(ActiveCell.Row, "Q")
    c = ActiveCell.Column
    If f > 0 Then
        Sheets("Folios Maritimos").Select
        Sheets("Folios Maritimos").Cells(f, c).Select
    End If
    Application.ScreenUpdating = True
End Sub

Saludos.Dante Amor

Si quedo bien dante solo hay un detalle que tengo que buscar la celda activa como por ejemplo en la imagen que subí si selecciono la celda que tiene el folio 157-A y le doy editar si se cumple la macro nada más que no me lo muestra a la vista si no que tengo que buscarla. Se podría hacer al go al respecto

No entiendo, ¿Cómo qué tienes que buscarla?

¿Cambiaste la macro de Buscar por la nueva macro que te envié?

¿La macro se cambia a la hoja "Folios Maritimos"?

La macro selecciona la celda con el folio 157-¿A?

Envíame tu archivo con las macros actualizadas con lo último que te envié y me explicas qué es lo que le falta a la macro.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Enrique Mtz” y el título de esta pregunta.

Cambia la macro de editar por esta

Sub editar()
'Por.Dante Amor
    f = Cells(ActiveCell.Row, "Q")
    c = ActiveCell.Column
    If f > 0 Then
        Sheets("Folios Maritimos").Select
        Sheets("Folios Maritimos").Cells(f, c).Select
    End If
End Sub

Prueba con la siguiente:

Sub editar()
'Por.Dante Amor
    f = Cells(ActiveCell.Row, "Q")
    c = ActiveCell.Column
    If f > 0 Then
        Sheets("Folios Maritimos").Select
        Sheets("Folios Maritimos").Cells(f, c).Select
        Application.Goto Reference:=Cells(f, "A"), Scroll:=True
    End If
End Sub

Ya te lo envíe si no lo recibes en la bandeja checa en correo no deseado por favor.

Ya quedo Dante era exactamente lo que necesitaba, muchas gracias entonces haces caso omiso el correo que te envíe, ya que con esto queda solucionado el detalle

Ya te envié el archivo con la última macro:

Sub editar()
'Por.Dante Amor
    f = Cells(ActiveCell.Row, "Q")
    c = ActiveCell.Column
    If f > 0 Then
        Sheets("Folios Maritimos").Select
        Sheets("Folios Maritimos").Cells(f, c).Select
        Application.Goto Reference:=Cells(f, "A"), Scroll:=True
    End If
End Sub

No olvides valorar.

¡Gracias! Dante te agradezco mucho tu ayuda, me fue muy útil

Disculpa Dante, ¿por qué sera con la macro que me enviste la columna observaciones de la hoja Buscar en vez de que me muestre el contenido de observaciones pero de la hoja folios marítimos me muestra el numero de fila?

En la columna P tienes tus observaciones y en la columna Q estoy poniendo el número de fila

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas