¿Cómo puedo ajustar una imagen automáticamente en un control ActiveX de imagen?

Tengo una hoja de excel en la que agregue el siguiente código:

Private Sub Image1_Click()
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo final
If Target.Address = "$A$1" Then
nombre = Target.Value
ActiveSheet.Image1.Picture = LoadPicture("C:\Portal\cs\fotos\5200\" & nombre & ".jpg")
End If
Exit Sub
final:
MsgBox "no se ha encontrado la foto"
End Sub

Solo que al agregar la imagen, no la ajusta al cuadro y si es muy grande solo se ve una parte, ¿me podrían ayudar con esto?

2 respuestas

Respuesta
1

Después de esta línea:

ActiveSheet.Image1.Picture = LoadPicture("C:\Portal\cs\fotos\5200\" & nombre & ".jpg")

Agrega esta:

ActiveSheet.Image1.PictureSizeMode = 1

Saludos. Dante Amor
No olvides finalizar la pregunta.

muchas gracias

solo una cosa mas, que debo modificar para que pueda agregar 9 fotos diferentes en la misma hoja?

intente repetir el código y cambiar el objeto pero no funciona, aun soy super novato

Podrías finalizar esta pregunta y crear una nueva por cada petición.

Respuesta
1

¿Dónde estarán los nombres de las otras 7 fotos? En celdas hacia abajo, hacia la derecha ... ¿en otras celdas?

Otro detalle del que espero tus aclaraciones: ¿Qué hacer si no se carga 1 imagen... seguir con el resto o ir al final donde tenés el mensaje de error?

Quedo a la espera de tus aclaraciones.

Los nombres quedan en diferentes celdas, había pensado dejarlos bajo cada control de imagen, si hay un error que siga sin cargar la foto faltante.

saludos

Primero dibujá tus 8 controles de imagen.

Luego copiá esta rutina en el objeto Hoja donde la tenías ajustando las celdas.

Dejé la ruta en una variable para simplificar. El día que cambies de ruta solo tenés que modificar esa línea.

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
nombre = Target.Value
ruta = "C:\Portal\cs\fotos\5200\"
If Target.Address = "$A$1" Then
 ActiveSheet.Image1.Picture = LoadPicture(ruta & nombre & ".jpg")
 ActiveSheet.Image1.PictureSizeMode = 1
ElseIf Target.Address = "$B$6" Then
 ActiveSheet.Image2.Picture = LoadPicture(ruta & nombre & ".jpg")
 ActiveSheet.Image2.PictureSizeMode = 1
ElseIf Target.Address = "$C$10" Then
 ActiveSheet.Image3.Picture = LoadPicture(ruta & nombre & ".jpg")
 ActiveSheet.Image3.PictureSizeMode = 1
End If
End Sub

¿Algo no se comprendió? Si no podes 'adaptarlo' a tu modelo enviame tu hoja al correo que aparece en mi sitio que dejo al pie. No olvides indicarme tu alias o motivo de consulta.

perdona la tardanza y muchas gracias por tu apoyo

Solo una cosa, esto se ejecuta cuando abro la hoja?

Saludos

No, los eventos Worksheet_Change se ejecutan al cambio en alguna celda, en tu caso lo tenías en A1 (If Target.Address = "$A$1" Then) y en mi ejemplo agregué otras como B6 y C10.

Podes leer más sobre esto en la sección Macros de mi sitio.

Sdos

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas