Como crear codigo VBA "worksheet_change + vlookup"

Para Dante Amor. Buenas Tardes Dante me puedes apoyar con la siguiente duda, tengo una hoja donde hay una tabla con valores (A1:D10), tengo otra hoja donde en la celda A1 esta un codigo de validación de lista, quiero que de manera automática al cambiar el valor de la celda A1 encuentre y rellene las celdas faltantes con los valores ingresados en la tabla de la hoja 1.

1 Respuesta

Respuesta
1

No entendí.

Puedes poner los nombres reales de las hojas. Y las celdas.

Específica claramente, hoja y celdas.

En cuál hoja y cuáles celdas se van a rellenar y de dónde (hoja y celdas) se debe tomar la información.

Explica un ejemplo real utilizando datos reales.

Para Dante Amor. Una disculpa Tengo una tabla (A1:D10) en la hoja "Sheet1", tengo en otra hoja "Sheet2" una tabla con cuatro valores (A1, A2, A3 y A4), en la celda A1 tengo una validación de datos mediante lista, quiero que busque el valor que aparezca en la celda A1 y rellene los valores faltantes (A2, A3 y A4). Tengo el código pero tengo que darle clic a un botón para que se ejecute, y lo que busco es que lo haga automático. Te paso el código esperando que complemente mi explicación y/o pueda dar mayor visión de lo relatado.

Range("A2") = Application.WorksheetFunction.VLookup(Sheets("sheet2").Range("A1"), Sheets("sheet1").Range("A1:D10"), 2, False)
Range("A3") = Application.WorksheetFunction.VLookup(Sheets("sheet2").Range("A1"), Sheets("sheet1").Range("A1:D10"), 3, False)
Range("A4") = Application.WorksheetFunction.VLookup(Sheets("sheet2").Range("A1"), Sheets("sheet1").Range("A1:D10"), 4, False)

Pon el siguiente código en los eventos de la sheet2

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        Range("A2:A4").ClearContents
        '
        Set h = Sheets("sheet1")
        Set b = h.Range("A1:A10").Find(Target.Value, lookat:=xlWhole)
        If Not b Is Nothing Then
            Range("A2").Value = h.Cells(b.Row, "B")
            Range("A3").Value = h.Cells(b.Row, "C")
            Range("A4").Value = h.Cells(b.Row, "D")
        End If
    End If
End Sub

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas