Utilizar varios control Activex (imagenes) n una macro de excel.

Llevo poco es esto de programar en excel, y necesito ver si me pueden ayudar, tengo que realizar una macro, en la cual al momento de escribir en una celda determinada un valor, refieriendose a un numero de registro, me aparesca la foto correspondiente en uno de los controlActivex que se utilizaran. No se si me explico bien. Pero el codigo que llevo hasta ahora es este.

private sub worksheet_Change (byVal Target As Range)

On Error Resume Next

If Target.Address = "$A$8" Then

ActiveSheet.Image1.Picture = LoadPicture ("c:\pop\"  & Target.Value & ".jpg")

End If

End Sub

Hasta aqui funciona con un control Activex, lo que necesito son otros 5 mas que funcionen igual, pero se que no puedo utilizar el mismo.comando varias veces, y aqui mi duda, ver si pueden ayudarme, von los demas.

1 respuesta

Respuesta
1

Seguramente el resto de los image estarán asociados aa otras celdas. Entonces el código puede quedar así:

private sub worksheet_Change (byVal Target As Range)

On Error Resume Next

If Target.Address = "$A$8" Then

ActiveSheet.Image1.Picture = LoadPicture ("c:\pop\"  & Target.Value & ".jpg")

Elseif target.address = " $A$9" Then

Activesheet.Image2.Picture = Load(......)

Elseif  target.address = ..... 'Tu otra celda

End If

End sub

También podrías utilizar Select case... En la Ayuda del Editor podrás encontrar explicaciones de su uso.

Arma la y si te ofrece alguna dificultad envíame aclaraciones yy nombres de cada objeto, celda y ruta.

Muchas gracias, en verdad que me has ayudado mucho, una. Sola cosa, creo que podrías ayúdame aun.Más. Si al escribir un valor en la celda, y dicho valor no corresponde con ningún archivo de los que se encuentran en la carpeta, como podría hacerle para que aparezca una imagen estándar de NOPHOTO, espero me de a entender

Te dejo la idea aunque no se si es exactamente lo que solicitas.

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo sinFoto    ' si no encuentra ruta o imagen va al final del código
If Target.Address = "$A$8" Then
    ActiveSheet.Image1.Picture = LoadPicture("c:\pop\" & Target.Value & ".jpg")
ElseIf Target.Address = "$A$9" Then
    'Activesheet.Image2.Picture = Load(......)
ElseIf Target.Address = "$A$10" Then   'Tu otra celda
    'Activesheet.Image2.Picture = Load(......)
End If
Exit Sub
sinFoto:
ActiveSheet.Image1.Picture = LoadPicture("D:\carpetas Datos\Descargas\img01.jpg")
End Sub

Lo que hace aquí es colocar en la Image1.... pero si tendrás varios controles Image, el control de error no va al inicio sino por encima de la instrucción ActiveSheet.Image?.Picture

Y tendrás tantos controles de error como image.

Si no es lo que necesitas, debes dejar una nueva consulta (puedes indicar que es para Elsa) con un código para 2 o 3 controles y aclarando lo que esperas obtener.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas