Visual Basic para Aplicaciones - Imágenes según valor de celda en otra hoja

Life is soft - evento anual de software empresarial
   
Vista:

Imágenes según valor de celda en otra hoja

Publicado por Svalin (5 intervenciones) el 27/06/2014 10:30:04
Saludos
Tengo un código VB que es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Private Sub Worksheet_Change(ByVal Target As Range)
'Si hay errores, que continúe
On Error Resume Next
'Si cambiamos el dato de la celda X, mostramos la foto de ese Clan
If Target.Cells = Range("E24") Then
'Ocultamos el procedimiento
Application.ScreenUpdating = False
'Pasamos a una variable, el nombre de la foto,
'que será el mismo que el nombre del Clan
imagen = Range("E24").Value
'Añadimos la extensión "png"
imagen = imagen & ".png"
'Buscamos la foto en el mismo directorio
'donde tenemos este fichero de Excel
ruta = ActiveWorkbook.Path & "\clanes\" & imagen
'Borramos la foto del Clan (si hubiera alguna)
Me.Shapes("imagen_clan").Delete
'Creamos el objeto fotografia, con la foto insertada
Set clan = Me.Pictures.Insert(ruta)
'Haremos que la foto ocupe desde X hasta X,
'para que no salgan fotos supergrandes, o
'superpequeñas, y salgan más "normalitas"
With Range("Z9:AH25")
Arriba = .Top
Izquierda = .Left
Ancho = .Offset(0, .Columns.Count).Left - .Left
Alto = .Offset(.Rows.Count, 0).Top - .Top
End With
'Le ponemos un nombre al objeto "clan"
'para poder borrarlo cuando cambie la celda X
'(Ver que borramos la foto que hubiese, antes de insertar la nueva)
With clan
.Name = "imagen_clan"
.Top = Arriba
.Left = Izquierda
.Width = Ancho
.Height = Alto
End With
'Eliminamos el objeto
Set clan = Nothing
'Ponemos todo como estaba
Application.ScreenUpdating = True
End If
End Sub

Lo estoy utilizando en la Hoja1 (Personaje), y funciona correctamente. Coge el valor de una celda, y según el Clan que ponga esa celda se muestra en otra parte de la hoja una imagen asociada

Lo que quiero hacer y no consigo (mayormente porque no sé cómo, ya que apenas tengo conocimientos de VB), es que ejecute lo mismo pero en una hoja diferente. Me explico. Que analice el valor de la celda donde se muestra el Clan, pero que la imagen la ponga en otra hoja diferente, por ejemplo en Hoja4 (Disciplinas). ¿Se puede hacer eso?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Oscar

Imágenes según valor de celda en otra hoja

Publicado por Oscar (14 intervenciones) el 27/06/2014 18:14:16
Donde indicas el rango donde va a ir la imagen:
With Range("Z9:AH25")

Puedes indicar también la hoja, si la hoja de destino se llama Disciplinas, no recuerdo exactamente como se escribe pero es algo así:
With Range("Disciplinas.Z9:Disciplinas.AH25")

Creo que también podías usar el Sheet en el Range en ese caso podría valer también:
With Sheets("Disciplinas").Range("Z9:AH25")

De esto último no estoy muy seguro de si sería exactamente así.

Si lo consigues comenta aquí como lo has hecho.
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Imágenes según valor de celda en otra hoja

Publicado por Svalin (5 intervenciones) el 27/06/2014 20:58:02
Pues no me ha funcionado ninguna de las dos opciones. Con la primera directamente me lo muestra en la misma hoja, sin cambiarla, y me planta la imagen en la esquina superior izquierda, osea a partir de la A1. Y con la segunda sigue funcionando normal, pero no hace lo que quiero, la sigue mostrando en esa misma página

No entiendo mucho de VB, así que no sé cómo demonios hacerlo, la verdad. ¿Alguna otra idea? Si lo crees conveniente puedo pasarte el archivo Excel para que veas lo que trato de hacer
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

Imágenes según valor de celda en otra hoja

Publicado por JuanC juanc2942@gmail.com (431 intervenciones) el 27/06/2014 21:57:50
prueba así:

Set clan = Sheets("Disciplinas").Pictures.Insert(ruta)

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Imágenes según valor de celda en otra hoja

Publicado por Svalin (5 intervenciones) el 27/06/2014 22:39:49
Tampoco funciona. Parece que no hay suerte =/
Os paso el archivo para que veáis exactamente cómo va la cosa: https://mega.co.nz/#!Gh4WXaCT!s49lcc4DQu66HhGtxCLuwrPBvBFY6wrZaQ-BkXLEpvE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

Imágenes según valor de celda en otra hoja

Publicado por JuanC juanc2942@gmail.com (431 intervenciones) el 27/06/2014 22:56:13
pues con la línea que publiqué sí funciona, es obvio que hay que hacer otros cambios pertinentes y sencillos...
si prestás atención al código no te será difícil hacerlo...

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Imágenes según valor de celda en otra hoja

Publicado por Svalin (5 intervenciones) el 27/06/2014 23:23:16
Ah, pero tú pones el código VB en la hoja1 (Personaje), ¿no? Porque en la hoja1 (Personaje) ya tengo el código, lo que estoy intentando hacer es poner el código en la hoja4 (Disciplinas), porque no sé poner estos dos códigos seguidos sin que se pisen. No sé si me explico..

Es decir, dándole al Desarollador ---> Visual Basic, tenemos el código en la hoja1 (Personajes). Entonces clicko en hoja4 (Disciplinas), le doy a 'Ver código', me aparece vacío y entonces repito el código que tenía antes
Adjunto foto:
http://fotos.subefotos.com/e25c929c3a38ed9152b7e85b667e22d6o.jpg
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Imágenes según valor de celda en otra hoja

Publicado por Svalin (5 intervenciones) el 27/06/2014 23:39:39
Perdón por el resposteo, se me acabó el tiempo de edición. Creo que ya sé qué está pasando. Lo que ocurre es que por lo que sea si cambia el valor de esa casilla, la imagen de la otra página no lo hace. Es decir que igual por lo que sea me obliga a que esté todo el código asociado a la misma hoja. Sin embargo yo tengo dos códigos, el de la hoja1 que pone la imagen en la hoja 1, y el de la hoja4 que coge el valor de la hoja1 pero pone otra vez la imagen en la hoja4
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar