Foros del Web » Soporte técnico » Ofimática »

VBA Excel: Leer de lista desplegable

Estas en el tema de VBA Excel: Leer de lista desplegable en el foro de Ofimática en Foros del Web. Hola, tengo una lista desplegable en Excel llamada 'lista' de la que quiero obtener que valor tiene seleccionado para hacer unas comprobaciones. Otra posibilidad seria ...
  #1 (permalink)  
Antiguo 03/11/2010, 05:14
 
Fecha de Ingreso: diciembre-2009
Mensajes: 52
Antigüedad: 14 años, 4 meses
Puntos: 0
VBA Excel: Leer de lista desplegable

Hola,

tengo una lista desplegable en Excel llamada 'lista' de la que quiero obtener que valor tiene seleccionado para hacer unas comprobaciones.

Otra posibilidad seria que cada vez que seleccione un valor de la lista, salte una macro que obtenga ese valor y me lo escriba en una celda llamada 'Tecnico'. Para luego hacer las comprobaciones.

Mi problema radica en que no encuentro la manera de obtener el valor seleccionado en la lista.

Mis pruebas han sido del estilo:

ActiveSheet.Shapes('lista').Value
ActiveSheet.Shapes('lista').Text

imagino que habrá algún método para conseguirlo, pero no logro encontrarlo por Internet.

Saludos y muchas gracias por avanzado
  #2 (permalink)  
Antiguo 03/11/2010, 09:26
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Respuesta: VBA Excel: Leer de lista desplegable

Prueba esto:

Código:
Sub elemento_seleccionado()
'Imaginemos que en A1 tenemos el desplegable
Range("A1").Select
'pasamos el valor seleccionado a una variable
valor = Selection.Validation.Parent
'mostramos un mensaje
MsgBox (valor)
End Sub
Salu2
  #3 (permalink)  
Antiguo 04/11/2010, 03:10
 
Fecha de Ingreso: diciembre-2009
Mensajes: 52
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: VBA Excel: Leer de lista desplegable

El pimer paso, referido a selecionar la celda donde está la lista no cabo de comprenderlo. Mi lista es un control de formulario que, por lo que entiendo, no está en ninguna celda. Si es así, no sé la manera de seleccionar la lista para luego poder aplicarle la instrucción Selection.Validation.Parent. No acabo de entender lo que me comentas de selecionar la celda donde está la lista. Lo he intentado con la celda que queda debajo de ella, pero no funciona.

Otra duda que me surge, para poder solucionarlo de otro modo es la siguiente:

Esta lista está vinculada a una celda (X33) que es parte de una fórmula. El resultado de la fórmula pueden ser nombres o un "#N/A".

Yo necesito que otra celda, muestra el mismo valor que la celda con la fórmula anterior pero, si tiene como resultado "#N/A" aparezca un guión.
He provado con:

SI(X33="#N/A";"-";X33)
SI(X33="N/A";"-";X33)

Esta fórmula no funciona, ya que siempre muestra el resultado de X33, no tiene en cuenta los N/A.

En resumen, mi cuestión a derivado en dos preguntas.

Muchas gracias 3pies por tu primera respuesta.

Saludos
  #4 (permalink)  
Antiguo 04/11/2010, 10:59
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Respuesta: VBA Excel: Leer de lista desplegable

Ok, entendido. Creía que te referías a una lista desplegable del tipo "lista de validación". Vamos, la típica lista que en Excel 2003 tienes en Datos --> Validación.

Si se trata de de un combobox, prueba con este ejemplo. Créate un formulario, e inserta un combobox (llámalo por defecto, combobox1) y un botón (por defecto CommandButton1).

Ponle este código al userform, para que al activarse, se generen los elementos del combobox:
Código:
Private Sub UserForm_Initialize()
'Creamos un bucle para que añada 100 números al desplegable
For i = 0 To 100
    'Añadimos los elementos (los números, en este caso)   
 ComboBox1.AddItem i
Next
End Sub
Ahora al botón, ponle este código:

Código:
Private Sub CommandButton1_Click()
'lanzamos un mensaje, para saber que se ha seleccionado
'en el Combobox1
valor_seleccionado = ComboBox1.List(ComboBox1.ListIndex)
MsgBox (valor_seleccionado)
End Sub
Si te fijas, con esta línea, tienes lo que buscas:

Código:
ComboBox1.List(ComboBox1.ListIndex)
  #5 (permalink)  
Antiguo 04/11/2010, 11:12
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Respuesta: VBA Excel: Leer de lista desplegable

Ops. Borrado por duplicado.

Última edición por 3pies; 04/11/2010 a las 11:29
  #6 (permalink)  
Antiguo 05/11/2010, 02:47
 
Fecha de Ingreso: diciembre-2009
Mensajes: 52
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: VBA Excel: Leer de lista desplegable

Muchas gracias 3pies, pero creo que seguimos sin entendernos.

Creo que te refieres a una lista desplegable puesta en un formulario. Yo, en cambio, me refiero a una lista desplegable que se encuentra en la misma hoja de excel, sin formulario alguno.

Una lista que insertas directamenta a la hoja de excel mediante: Programador -> Insertar -> Controles de Formulario.

Muchas gracias de nuevo.

Saludos
  #7 (permalink)  
Antiguo 05/11/2010, 08:38
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 4 meses
Puntos: 144
Respuesta: VBA Excel: Leer de lista desplegable

A ver si ahora lo tenemos:
Código:
Sub ejemplo()
    ActiveSheet.Shapes("Lista desplegable 1").Select
    valor = Selection.List(Selection.ListIndex)
    MsgBox (valor)
End Sub
  #8 (permalink)  
Antiguo 08/11/2010, 04:50
 
Fecha de Ingreso: diciembre-2009
Mensajes: 52
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: VBA Excel: Leer de lista desplegable

¡Perfecto!

Muchas gracias 3pies, sobretodo por tu persistencia. Muy agradecido.

Etiquetas: desplegable, excel, lista, vba
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:07.