Obtener de una variable una ruta?

Tengo un formulario con una etiqueta, un botón y un bombo. Este me carga una lista con nombres y al seleccionar uno, me carga una imagen en el botón. La lista de nombres va a aumentar considerablemente, pero me gustaría reducir el código al máximo. He intentado modificar el código, pero no se como cuadrarlo.

Private Sub ComboBox1_Click()
 Select Case ComboBox1.Value
 Case 0
 Label1.Caption = "Hola Sara"
 Boton1.Picture = LoadPicture("C:\Users \ Mati\Desktop \ VBA \ Imagenes \ Sara.jpg")
 Case 1
 Label1.Caption = "Hola Ana"
 Boton1.Picture = LoadPicture("C:\Users \ Mati \ Desktop \ VBA \ Imagenes \ Ana.jpg")
 Case 2 
 Label1.Caption = "Hola Teresa"
 Boton1.Picture = LoadPicture("C:\Users \ Mati \ Desktop \ VBA \ Imagenes \ Teresa.jpg")
 Case 3
 Label1.Caption = "Hola Carla"
 Boton1.Picture = LoadPicture("C:\Users\Mati \ Desktop \ VBA \ Imagenes \ Carla.jpg")
 End Select
End Sub

Este es el código del combo, pero me gustaría hacerlo de la siguiente manera.

ruta = "C:\Users\Mati\Desktop\VBA\Imagenes\"
x = (ComboBox1.Value & ".jpg")
Boton1.Picture = LoadPicture & ruta(x)

2 Respuestas

Respuesta
2

Reconozco que de Excel no tengo ni idea, pero por si te sirve. Ni tampoco tengo imágenes muy pequeñas, así que he tenido que hacer el botón un poco grande. Ni sé lo que vas a poner en el combinado. Pero si tengo el formulario con un combinado donde elijo un nombre y un botón

Si elijo a Carlos

Si elijo a Maria

El código del evento Después de actualizar del combinado al que llamo elegir es

Private Sub Elegir_AfterUpdate()
Comando225.Picture = "C:\users\gonza\documents\imagenesusar\" & Elegir & ".png"
End Sub

Lógicamente tendrías que cambiar mi ruta por la tuya

Gracias por la respuesta, pero es más o menos lo mismo que tengo. Lo que pretendo es tener fijo en una variable la ruta, por ejemplo:  

'ruta = "C:\Users\Mati\Desktop\VBA\Imagenes\"

Y cuando selecciono un nombre del combo, concatenarlo a esa ruta. 

Pero ya la tienes fija, la ruta a la carpeta donde guardas las imágenes, sólo le añade el valor del combo, sea el que se que escojas. ¿Para qué definir una variable si va a ser igual a un valor fijo, que es la ruta a la carpeta, y además para darle valor tienes que escribir precisamente esa ruta? Por otro lado estás definiendo dos variables, ambas tipo String, Ruta y X

Lo que tu propones sería

dim ruta as string, x as string

ruta=....

x=......

comando1.picture=....

Algo, a lo que de verdad no le veo sentido y además sólo estoy utilizando una línea de código.

Respuesta
1

[H o l a Carolina y bienvenida a TodoExpertos.

Prueba lo siguiente y me comentas:

Private Sub ComboBox1_Click()
  Dim sPath As String, sName As String
  sPath = "C:\Users\Mati\Desktop\VBA\Imagenes\"
  sName = ComboBox1.Value
  '
  Label1.Caption = "Hola " & sName
  Boton1.Picture = LoadPicture(sPath & sName & ".jpg")
End Sub

Gracias por tu respuesta Dante, pero me da error. (No se ha encontrado la ruta de acceso)

Creo que lo he colocado bien. Solo lo he probado en el caso 0 "María"

Pero no debe ir dentro del case. Debes reemplazar todo tu código por mi código.

Debes revisar que el archivo efectivamente se llame "maría.jpg" (revisa si el archivo también tiene acento).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas