Macro para mostrar una imagen al seleccionar un dato de una lista desplegable

Tengo en una hoja de excel información en el rango A2:A6, y en B1 tengo una lista desplegable que toma el rango de A2:A6, Ocupo mostrar en la hoja la imagen que corresponda según el valor seleccionado de la lista desplegable.

A2 = TORNILLO

A3 = TUERCA

A4 = CLAVO

A5 = MARTILLO

A6 = CINCEL

Tengo las imágenes correspondientes tornillo.jpg, tuerca.jpg ...

Lo que ocupo es una macro que me permita mostrar la imagen correspondiente dentro de la hoja de excel.

1 Respuesta

Respuesta
2

Te anexo las indicaciones para que la macro funcione automáticamente cuando cambias la celda B1

Pon la siguiente macro en los eventos de tu hoja

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 1 Then Exit Sub
    ruta = ThisWorkbook.Path & "\"
    '
    On Error Resume Next
    ActiveSheet.DrawingObjects("imagen").Delete
    On Error GoTo 0
    If Target.Value = "" Then Exit Sub
    If Not Intersect(Target, Range("B1")) Is Nothing Then
        arch = Target.Value & ".jpg"
        If Dir(ruta & arch) = "" Then
            MsgBox "La imagen no existe", vbExclamation
            Exit Sub
        End If
        Set fotografia = ActiveSheet.Pictures.Insert(ruta & arch)
        Set celda = Range("C1")
        '
        With fotografia
            .Name = "imagen"
            .ShapeRange.LockAspectRatio = msoFalse
            .Top = celda.Top
            .Left = celda.Left
            .Width = celda.Width
            .Height = celda.Height
        End With
        Set fotografia = Nothing
    End If
End Sub

Las imágenes deberán estar en la misma carpeta donde tienes el archivo con la macro.

Si las imágenes están en otra carpeta, entonces cambia en la macro esta línea:

ruta = ThisWorkbook.Path & "\"

Por el nombre de la carpeta, por ejemplo:

ruta = "C:\archivos\imagenes\"

La imagen se insertará en la celda C1, si quieres que se inserte en otra celda, cambia en la macro "C1" por la celda que desees, en esta línea:

Set celda = Range("C1")

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(tu hoja)
  4. En el panel del lado derecho copia la macro

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas