Filtrar lista de cuadro conbinado y mostrar varias columnas

20/09/2008 - 05:12 por GRIEGO59 | Informe spam
Hola!
En un formulario tengo un combobox1 con este código:

'Carga el combobox con los productos al activar el formulario
Private Sub UserForm_Activate()
Sheets("Códigos").Select
Range("a1").Select

Do While ActiveCell <> Empty
ActiveCell.Offset(1, 0).Select
ComboBox1.AddItem ActiveCell
Loop
End Sub

La lista del cuadro combinado muestra la columna "a".
Los títulos de las columnas a, b y c son Código, producto, proveedor.

Quisiera que la lista del cuadro combinado muestre las columnas "a", "b" y
"c" de la hoja "códigos" y se seleccione la columna "a"

Quisiera, si es posible, que la lista del combobox1 muestre los productos
asociados al proveedor seleccionado en un combobox2.

Gracias por la ayuda,

Darío

Preguntas similare

Leer las respuestas

#11 GRIEGO59
22/09/2008 - 19:38 | Informe spam
Hola, Hector!
Eres una nota!
Gracias por ordenarme los productos en función de su número de código.

Hay un problemita en la línea:
.Range("f2") = Proveedores
La celda f2 no toma el valor del combobox Proveedores y por supuesto que el
filtro avanzado de los productos no funciona. Es decir que en el combobox
Productos salen todos los productos porque no hay criterio en f2.

Los proveedores de mi columna c son nombres con letras no hay números. El
formato de la columna c es general.

Saludos,
Darío






"Héctor Miguel" escribió:

hola, Darío !

no se cual sea "el orden" en que cada codigo esta ubicado dentro del modulo del formulario -?-
dentro de las "sanas costumbres" (o habitos) para lograr una +/- buena programacion te puedo mencionar:

- las declaraciones se ponen al inicio del modulo
variables (Dim... Private..., etc.), llamadas a las API's, tipos personalizados, etc.

- para los procedimientos (o eventos) es conveniente usar el orden "esperado" en que sucederan (o se requieran)

- hay mas, pero como decia: "son costumbres" (y las costumbres "se van adquiriendo" y depurando/adaptando/...)

te sugiero que cambies algunos procedimientos/eventos/... en el orden dentro del modulo:

1) las declaraciones (como "Option Explicit", "Option Private Module", => Private CargandoProveedores As Boolean, etc.)
2) el evento '_Initialize' del formulario
3) el evento '_Activate' del formulario
4) el evento '_QueryClose'
5) el evento '_Terminate'
6) -> los eventos de los controles +/- segun "su orden" (tabulacion, arreglo, secuencia logica, etc. etc. etc.)
7) cualquier procedimiento/funcion personalizada extra (de aplicacion exclusiva para el formulario)

prueba despues de "arreglar" el orden de procedimientos en tu modulo y...
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.



Respuesta Responder a este mensaje
#12 Héctor Miguel
22/09/2008 - 22:05 | Informe spam
hola, Darío !

Hay un problemita en la linea:
.Range("f2") = Proveedores
La celda f2 no toma el valor del combobox Proveedores y por supuesto que el filtro avanzado de los productos no funciona.
Es decir que en el combobox Productos salen todos los productos porque no hay criterio en f2.
Los proveedores de mi columna c son nombres con letras no hay nomeros. El formato de la columna c es general.



y... que sucede si cambias la linea que expones por la de la propuesta original ???
de: -> .Range("f2") = Proveedores
a: -> .Range("f2") = Proveedores.Value

saludos,
hector.
Respuesta Responder a este mensaje
#13 GRIEGO59
23/09/2008 - 03:16 | Informe spam
Hola, Hector!
y... que sucede si cambias la linea que expones por la de la propuesta original ???
de: -> .Range("f2") = Proveedores
a: -> .Range("f2") = Proveedores.Value


con ninguna de las dos opciones no se copia el combobox Proveedores en f2.
Respuesta Responder a este mensaje
#14 GRIEGO59
23/09/2008 - 03:37 | Informe spam
Hice estas pruebas:
Estos códigos funcionan:
Private Sub Productos_Change()
With Worksheets("códigos")
.Range("m2") = Productos.Value
End With
End Sub

Private Sub Productos_Change()
With Worksheets("códigos")
.Range("m5") = Productos.Value

End With
End Sub

Pero este código no funciona:
Private Sub Proveedores_Change()
Productos.Clear
If CargandoProveedores Then Exit Sub
With Worksheets("códigos")
.Range("m2") = Proveedores.Value

No será que le estamos indicando un numero de columna inexistente? Como se
le indica al código la columna del combobox que se mostrará en el combobox
después de seleccionar el producto y la columna que se copiará en la celda
con el comando = Proveedores.Value ?

Saludos,
Darío
Respuesta Responder a este mensaje
#15 Héctor Miguel
23/09/2008 - 03:40 | Informe spam
hola, Darío !

y... que sucede si cambias la linea que expones por la de la propuesta original ???
de: -> .Range("f2") = Proveedores
a: -> .Range("f2") = Proveedores.Value



con ninguna de las dos opciones no se copia el combobox Proveedores en f2.



(lo siento, pero...) no soy capaz de "ver" alguna posible causa de la falla que comentas -?-
el codigo del ejemplo lo he comprobado desde la version 97 a la 2007 (en ninguna falla)

- revisa el codigo
- comprueba el orden de los eventos
- prueba con la hoja "codigos" como la hoja activa (no pongas algun screenupdating en false)

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida