Excel 2007 - Cuadro combinado que depende de otro cuadro combinado

Tengo una hoja llamada Producto y otra Entrada

En la hoja Producto existen dos campos: Producto y Referencia. Está rellenada de la siguiente manera:

Producto Referencia.

Chocolate - Blanco

Chocolate - Negro

Turrón - Chocolate

Turrón - Pistacho

En la hoja de entrada tengo dos cuadros combinados: Producto y referencia.

Lo que yo pretendo es primera instancia es relacionar con un cuadro combinado el cuadro combinado producto de mi hoja entrada con el campo producto de mi hoja Producto. Esto ya está logrado:

------------------------------------------------------

Private Sub UFProducto_Enter()

SHEETS(1).Select

Range("A2").Select

Do While Not IsEmpty(ActiveCell)

UFProveedor.AddItem ActiveCell

ActiveCell.Offset(1, 0).Select

Loop

End Sub

------------------------------------------------------

Y lo segundo es que en función de lo elegido en el primer cuadro combinado Producto, me filtre las referencias coincidentes en el cuadro combinado Referencia, es decir:

Si elijo Chocolate en el cuadro combinado producto, al abrir el desplegable del cuadro combinado referencia en la hoja Entrada, sólo me debería de dejar elegir: Blanco o negro. Y si elijo Turrón: Sólo debería dejar elegi: Chocolate o Pistacho.

Me podéis por favor ayudar con el código

1

1 Respuesta

807.250 pts. Excel avanzado y VBA

Te mando la solución con un ejemplo, sigue con atención:

-Tenemos en la hoja1 los productos y referencias anotados en el rango A1:B5 (la fila 1 es el encabezado)

-Dentro de la hoja tenemos dibujados dos combos: combobox1 y combobox2

-Ahora copia estas macros dentro del objeto hoja1

La primera se autoejecuta en el mentó de entrar en la hoja1 para cargar el combobox1 y la segunda sirve para cargar el combobox2 dependiendo de lo seleccionado en el combo1

Private Sub Worksheet_Activate()
ComboBox1.Clear
Range("a2").Select
Do While ActiveCell.Value <> ""
If InStr(valores, ActiveCell) = 0 Then
valores = valores & "," & ActiveCell
End If
ActiveCell.Offset(1, 0).Select
Loop
valores = Mid(valores, 2, Len(valores) - 1)
valores = Split(valores, ",")
For x = 0 To UBound(valores)
ActiveSheet.ComboBox1.AddItem valores(x)
Next
End Sub
Private Sub ComboBox1_Click()
ComboBox2.Clear
valor = ComboBox1.Value
Set busca = ActiveSheet.Range("a2:a20").Find(valor, LookIn:=xlValues, lookat:=xlWhole)
If Not busca Is Nothing Then
ubica = busca.Address
Do
ComboBox2.AddItem busca.Offset(0, 1)
Set busca = ActiveSheet.Range("a2:a20").FindNext(busca)
Loop While Not busca Is Nothing And busca.Address <> ubica
End If
End Sub

No olvides finalizar la consulta

Lo primero muchas gracias por contestar.

He cometido un error en mi enunciado. Los cuadros combinados no los inserto en la hoja, sino que están en un formulario.

El cometido final de esta excel es que yo seleccione en el formulario el producto, que elija la referencia en función al producto y que luego al darle a grabar lo deje en la correspondientes celda de la hoja entrada.

La peculiaridad es que iré aumentando tanto las referencias como los productos en la hoja Productos, por lo que necesito que los cuadros combinados se alimenten y no tengan un rango definido.

Si me pasas tu email te envío el ejemplo.

Muchas gracias por todo.

Un saludo:

Ok, puedes mandarme un ejemplo explicado:

[email protected]

Perdón por la tardanza, pero ha sido un final de año muy complicado.

El código no funcionaba inicialmente, pero me ha sido de gran utilidad para poder dar solución a mi problema.

Muchísimas gracias.

Un saludo:

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas