Ver el mismo archivo de imagen desde 2 formularios diferentes del mismo libro

Tengo un programa de excel que guarda datos y una imagen por cada cliente registrado, pero como la imagen cargada en el formulario queda muy pequeña y no se alcanza a leer entonces necesito abrir esa misma imagen desde otro formulario para visualizarla en forma más grande ya que las imágenes guardadas son de documentos y facturas, agregue otro formulario con un cuadro de imagen pero no carga la imagen, ¿cómo puedo vincular el segundo form para que me muestre la imagen?

2 Respuestas

Respuesta
2

Si pensabas en un 2do formulario solo para mostrar la imagen ampliada, no lo necesitas tal como te comenta Julián.

Como ya tenia avanzada la macro (en Excel) te la envío igual aunque veo que ya recibiste respuesta acertada.

Yo utilicé un Label para guardar la variable. Podrías dibujarlo debajo del control Image para que no se vea.

Private Sub Image1_Click()
'la primera vez estará vacío el control Label y como es un control de texto lo evalúo como Val
If Val(Label1.Caption) = 0 Then
    Label1.Caption = 1
    Image1.Height = 100      'tamaño ampliado
    Image1.Width = 200
Else
    Label1.Caption = 0
    Image1.Height = 40      'tamaño original, reducido
    Image1.Width = 90
End If
End Sub

Ajusta los valores de altura (Height) y de ancho (Width) para ambos casos.

Sdos y no olvides valorar las respuestas.

Elsa

Ahora, si de todos modos prefieres mostrarlo en otro formulario así sería el código. Ajusta nombre del UF y los controles.

Private Sub Image1_Click()
With UserForm4.Image1             '2do formulario con control Image
    .Picture = Me.Image1.Picture   'se le asigna el mismo Picture 
    .PictureSizeMode = 1            'se lo puede mostrar con otro valor en esta propiedad
End With
'se muestra el UF
UserForm4.Show
End Sub

La propiedad PictureSizeMode puede tomar 3 valores (0 = clip, 1 = strech, 3 = zoom). Elegí la que mejor te parezca.

Sdos!

Hola Elsa, muchas gracias, me queda una duda sobre tu ejemplo, se puede que cuando  se posicione el cursor sobre el cuadro de imagen se muestre el cuadro de dialogo  mostrando la imagen de tamaño  mayor???  ¡Gracias! 

No me queda clara tu petición... ¿Tenés 2 imágenes? ¿Necesitas buscar la segunda? ¿Cuál cuadro de diálogo deseas mostrar?

Sdos!

... Me queda una duda sobre tu ejemplo ...

Dejé 2 ejemplos... no sé de cuál de ellos necesitas más ayuda.

¡Gracias elsa, en el primero de tus ejemplos, si entendí bien se debe dar click sobre el label que esta oculto bajo el control imagen, eso lanzara un que se agrande la imagen mostrándola en un cuadro de dialogo ... ¿es correcto?

¿Si fuera así la pregunta que planteaba es que en lugar de hacer click sobre el label para lanzar el evento si se pudiera solo posicionar el puntero para lograr el mismo evento sin el click?

Solo debes hacer clic sobre la imagen ... NO sobre el Label que además estará oculto.

Private Sub Image1_Click()

El otro evento que podrías utilizar es el MouseMove... probalo a ver si no te afecta al funcionamiento del resto del formulario.

Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

'las mismas instrucciones

End Sub

En la imagen podrás observar todos los eventos posibles para un control Image:

Sdos!

¡ Buen día matilde, voy a tratar de adaptar mi código con tus instrucciones y ya te comento como funcionó, igual subiré el archivo para a quien le sirva , gracias saludos cordiales...

Respuesta
2

El Excel no es lo mío, pero puede darte una idea. No necesitas un segundo formulario. Te muestro un formulario, es en Access, pero el control imagen tiene las mismas propiedades. Y un cuadro de texto( aunque lo mismo puedes hacerlo con variables, que estaría oculto pero que dejo a la vista para que veas el proceso

Cuando hago clic sobre la imagen, lo primero que hace es darle el valor 1 al cuadro de texto y agrandarla

Miro lo que tenga que mirar y cuando vuelvo a hacer clic sobre la imagen le suma 1 al cuadro de texto D, con lo cual ahora vale 2 y le digo que recupere su tamaño inicial, y que D vuelva a valer 0 para futuras ampliaciones.

El código del evento Al hacer clic del control imagen, que en este caso se llama imagen 370 es

Private Sub Imagen370_Click()
D = Nz([D]) + 1
If D = 1 Then
Imagen370.Height = 6 * 570
Imagen370.Width = 5 * 570
ElseIf D = 2 Then
Imagen370.Height = 2 * 570
Imagen370.Width = 2 * 570
D = 0
End If
End Sub

Pero ya te digo que es por darte una idea

Hola julián muchas gracias, me ha gustado mucho tu aporte la verdad no consideraba esa opción pero es bastante útil me ha ayudado mucho ¡Gracias!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas