MACRO realice búsqueda en donde se coloque la celda de "busqueda" (en 1ra fila)

Dante la presente es una petición o mejora al MACRO desarrollaste en la pregunta "

MACRO para búsqueda y reemplazo BREVE" cuya MACRO es la siguiente (la cual funciona muy bien)

Private Sub Worksheet_Change(ByVal Target As Range)'Por.Dante Amor    If Target.Address(False, False) = "G1" Then        If Target.Count > 1 Then Exit Sub        Set r = Range("G4:G" & Range("G" & Rows.Count).End(xlUp).Row)        Set b = r.Find(Target, LookIn:=xlFormulas, lookat:=xlPart)        r.Interior.ColorIndex = xlNone        If Not b Is Nothing Then            ncell = b.Address            Do                b.Select                If MsgBox("Es el dato " & b.Value, vbQuestion + vbYesNo) = vbYes Then                    b.Interior.ColorIndex = Target.Interior.ColorIndex                    If MsgBox("Desea continuar", vbQuestion + vbYesNo) = vbNo Then                        Exit Sub                    End If                End If                Set b = r.FindNext(b)            Loop While Not b Is Nothing And b.Address <> ncell            MsgBox "Ya no hay más coincidencias"        Else            MsgBox "No existen datos"        End If    End IfEnd Sub

La mejora que queria pedirte si es posible que se pueda mover la Celda de busqueda que para este caso esta en la celda "G1" y por lo tanto la busqueda la realiza en la columna "G", yo te pido que esta celda de busqueda se pueda mover a culquier posicion de la fila 1.

Por ejemplo, realizar una búsqueda de coincidencias en la columna "B" donde esta la descripción de los artículos del almacen, para ello pueda mover la celda de búsqueda a la celda "B1" y por defecto la MACRO detecte que la búsqueda lo tiene que hacer en la columna "B".

Funcionaria de la siguiente manera

1) La celda de búsqueda esta en "G1"

2a) yo realice movería dicha celda de búsqueda, con crtl+C a la nueva intentar celda "B1" trasladando la celda de búsqueda con crtl+V

2b) si no se puede hacer lo anterior, quizás la nueva ubicación se pueda trasladar de la siguiente manera, yo ubicado el cursor en celda "G1" apreté una tecla de ayuda (ya sea F1, F2,... F12) para que pueda llamar a un procedimiento que me preegunte ¿a qué celda quieres mover la búsqueda?,

3) Allí coloco la letra B (siguiendo con el ejemplo, ya que puede ser cualquier columna osea cualquier letra), y si pongo escape es que por error apreté la tecla de ayuda para mover celda de búsqueda.

4) Seleccionada ya cual va a ser la celda de búsqueda se digita el dato a buscar y con solo dar enter inicia la MACRO arriba mostrada

1 respuesta

Respuesta
1

Te anexo la macro, es más sencilla tu idea original, en la celda F1 escribes la letra de la columna y en G1 escribes el dato a buscar, presionas enter y la macro se activa.

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Address(False, False) = "G1" Then
        If Target.Count > 1 Then Exit Sub
        c = [F1]
        Set r = Range(c & "4:" & c & Range(c & Rows.Count).End(xlUp).Row)
        Set b = r.Find(Target, LookIn:=xlFormulas, lookat:=xlPart)
        r.Interior.ColorIndex = xlNone
        If Not b Is Nothing Then
            ncell = b.Address
            Do
                b.Select
                If MsgBox("Es el dato " & b.Value, vbQuestion + vbYesNo) = vbYes Then
                    b.Interior.ColorIndex = Target.Interior.ColorIndex
                    If MsgBox("Desea continuar", vbQuestion + vbYesNo) = vbNo Then
                        Exit Sub
                    End If
                End If
                Set b = r.FindNext(b)
            Loop While Not b Is Nothing And b.Address <> ncell
            MsgBox "Ya no hay más coincidencias"
        Else
            MsgBox "No existen datos"
        End If
    End If
End Sub

¡Gracias! Dante Amor, quedo de maravilla la búsqueda es perfecta, es ud un maestro del excel, gracias, saludos, JOHNMMR41, LIMA PERÚ

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas