Visual Basic para Aplicaciones - ComboBox dependientes

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 177
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

ComboBox dependientes

Publicado por Albert (204 intervenciones) el 22/06/2012 22:47:48
Buenas tardes foreros,
En un form. necesito poner dos combobox uno dependiente del otro, vaya que lleno el primero de una lista y segun lo que pongo en el combobox2 se me desplega otra lista.
He creado las listas (insertar-nombre-definir) e intento que me funcione con un "case" en el combobox2 pero es evidente que en algo no acierto, puesto que ponga el "list" que ponga (los he probado "creo" que todos) me da el error 381 en tiempo de ejecución
Mil gracias de antemano por vuestra ayuda.
Albert

Este es el codigo que estoy usando:


Private Sub ComboBox1_Enter()
Dim i As Double
Dim Final As Double
Dim tareas As String


ComboBox1.BackColor = &H80000005

For i = 1 To ComboBox1.ListCount

'Remove an item from the ListBox.
ComboBox1.RemoveItem 0

Next i

For i = 5 To 11
If Datos.Cells(i, 3) = "" Then
Final = i - 1
Exit For
End If
Next

For i = 5 To Final
tareas = Datos.Cells(i, 3)
ComboBox1.AddItem (tareas)
Next
End Sub

Private Sub ComboBox1_Click()
'al seleccionar opción en Combo1 se asigna el rango al combo2
Select Case ComboBox1.Value
Case Is = "mediciones"
ComboBox2.List = "Hoja2!mediciones" 'en esta linea es donde me da el error
Case Is = "Proyectos"
ComboBox2.List = "Hoja2!Proyectos"
'Etc. con todas las listas
End Select
End Sub
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 Gonzalo Quintana

ComboBox dependientes

Publicado por Gonzalo Quintana (1 intervención) el 12/07/2012 17:44:01
Albert
Es muy probable que, por la línea donde indicas el error, que no esté tomando la lista que deseas cargar al ComboBox2 sino que toma toda la hoja...
Saludos,

Gonzalo
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
sin imagen de perfil
Val: 177
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

ComboBox dependientes

Publicado por Albert (204 intervenciones) el 13/07/2012 11:08:08
Gracias por tu respuesta, el problema es que no suelo usar los "Case" soy mas de "If Then" jejejeje es lo que pasa cuando uno es autodidacta y aprende viendo el codigo escrito por otros y preguntando en este foro (y los manuales de ElsaMatilde), ahora estoy intentando resolverlo con if y then pero se me hace un codigo larguisimo y muy pesado, en cuanto descubra como resolverlo con "case" lo modifico.
Gracias
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
sin imagen de perfil
Val: 177
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

ComboBox dependientes

Publicado por Albert (204 intervenciones) el 13/07/2012 12:22:18
Bueno al final he mezclado los dos (el If y el Case) y ha sakido algo que funciona, es pesado pero no tanto como sin el "case" , seguro que existe una manera mas simple hasta que no la descubra voy a usar esto:



Private Sub ComboBox1_Click()
'al seleccionar opción en Combo1 se asigna el rango al combo2

Dim i4 As Double
Dim i5 As Double
Dim Final4 As Double
Dim Final5 As Double
Dim tareas As String

'para col "D" mediciones
For i4 = 5 To 20
If Datos.Cells(i4, 4) = "" Then
Final4 = i4 - 1
Exit For
End If
Next
'para Col "E" Proyectos
For i5 = 5 To 20
If Datos.Cells(i5, 5) = "" Then
Final5 = i5 - 1
Exit For
End If
Next


Select Case ComboBox1.Value

Case "mediciones"
For i4 = 5 To Final4
tareas = Datos.Cells(i4, 4)
ComboBox2.AddItem (tareas)
Next

Case "Proyectos"
For i5 = 5 To Final5
tareas = Datos.Cells(i5, 5)
ComboBox2.AddItem (tareas)
Next


End Select

End Sub




Mil gracias a todos
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