Adaptación de macro para ser operativa en 2 hojas a la vez. Para Dante Amor

Tengo una macro que ejecuta la función buscarv() en una base de datos que se encuentra en la hoja2 y quisiera que fuera también operativa en la hoja1 desde una celda concreta que le señalase. El código es el siguiente:

Sub busqueda()
Dim lookupvalue As Variant, value As Variant, lookupRange As Range
value = Range("b16")
Set lookupRange = Range("b4:d14")
lookupvalue = Application.VLookup(value, lookupRange, 3, False)
'Si no encuentra valor finaliza
If IsError(lookupvalue) Then
Exit Sub
'Si lo encuentra lo devuelve
Else
MsgBox lookupvalue
End If
End Sub

1 Respuesta

Respuesta
1

¿Quieres otra macro?

¿O quieres que la misma macro busque en la hoja2 y si no encuentra que busque en la hoja1?

Si quieres la misma macro, solamente la tienes que seleccionar la hoja1 y ejecutar la macro.

Tampoco entiendo esto: "desde una celda concreta que le señalase"

La macro está funcionando desde la Hoja2 que es donde está la base de datos donde ha de buscar el valor de la celda seleccionado (que también está en dicha hoja). Lo que quiero es que esa misma macro u otra asignada a la Hoja1 tome el valor seleccionado que en este caso estará en la Hoja1. Eso ahora mismo no lo hace. Solo es operativa con el valor asignado en la Hoja2, que es donde se encuentra la base de datos.

Tu macro toma el valor de la celda B16 y lo busca en el rango B4:D14. Pero en ninguna parte de la macro dice que lo deba hacer en la hoja2, por eso digo, que ejecutes la macro en la hoja1 y va a funcionar.

Dices esto: "tome el valor seleccionado" te refieres que que tome el valor de la celda que tienes seleccionada, es decir, ¿qué no tome el valor de la celda B16?

Otra duda, quieres que "tome el valor seleccionado" y lo busque, ¿dónde quieres buscarlo en la hoja1 o en la hoja2?

Si consideras mejor olvidarnos de esa macro que pusiste y me explicas paso a paso qué es lo que necesitas y te creo una macro nueva, porque no te estoy entendiendo.

Te anexo las macros

Esta macro toma el valor de la hoja1 y lo busca en la hoja1

Sub busqueda()
    Dim lookupvalue As Variant, value As Variant, lookupRange As Range
    value = Sheets("Hoja1").Range("b16")
    Set lookupRange = Sheets("Hoja1").Range("b4:d14")
    lookupvalue = Application.VLookup(value, lookupRange, 3, False)
    'Si no encuentra valor finaliza
    If IsError(lookupvalue) Then
        Exit Sub
        'Si lo encuentra lo devuelve
    Else
        MsgBox lookupvalue
    End If
End Sub

Esta macro toma el valor de la hoja1 y lo busca en la hoja2

Sub busqueda()
    Dim lookupvalue As Variant, value As Variant, lookupRange As Range
    value = Sheets("Hoja1").Range("b16")
    Set lookupRange = Sheets("Hoja2").Range("b4:d14")
    lookupvalue = Application.VLookup(value, lookupRange, 3, False)
    'Si no encuentra valor finaliza
    If IsError(lookupvalue) Then
        Exit Sub
        'Si lo encuentra lo devuelve
    Else
        MsgBox lookupvalue
    End If
End Sub

Si alguna de las opciones es la que necesitas, no olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas