¿Cómo sincronizar 7 combobox en vba?

Estoy trabajando en un formulario donde tengo 7 combobox que tienen que estar relacionados:

El formulario es un buscador que va por orden de la siguiente manera:

Orden jerárquico

1.- Empresa (1 combobox con nombre CLIENTEXISTENTE)

2.- Producto (2 combobox relacionados: código, descripción de material con nombres NPARTEXISTENTE, PROD)

3.-Requerimientos de material (4 combobox que contienen los materiales que necesita el producto los cuales tienen los nombres de CÓDIGO 1,2,3,4 respectivamente)

Los datos están almacenados en una base de datos que contienen los campos de la sig manera:

La base de datos tiene la información en las columnas de siguiente manera:

1. Empresa

2. Producto (no. Parte)

3. Descripción de producto

4. Material 1( Comp 1)

5. Consumo material 1 (Consumo 1)

6. Material 2 (Comp 2)

7. Consumo material 2 (Consumo 2)

8. Material 3( Comp 3)

9. Consumo material 3 (Consumo 3)

10. Material 4( Comp 4)

11. Consumo material 4 (Consumo 4)

La caratula del formulario es el sig:

La idea del formulario es que pueda buscar productos y se desplieguen los materiales que contiene el producto en los combobox. Para el cual desarrolle el sig código que está dentro del evento combobox No. Parte que es el que realiza la búsqueda final de los materiales:

Private Sub NPARTEXISTENTE_Change()

Dim ufila As Integer
Dim i As Integer

CODIGO1.ListIndex = -1
CODIGO2.ListIndex = -1
CODIGO3.ListIndex = -1
CODIGO4.ListIndex = -1

Set hprod = Worksheets("productos")

ufila = hprod.Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To ufila
If Cells(i, 2) = Me.NPARTEXISTENTE Then
CODIGO1.Value = Hoja7.Cells(i, 4)
CONSUMO1.Value = Hoja7.Cells(i, 5)
CODIGO2.Value = Hoja7.Cells(i, 6)
CONSUMO2.Value = Hoja7.Cells(i, 7)
CODIGO3.Value = Hoja7.Cells(i, 8)
CONSUMO3.Value = Hoja7.Cells(i, 9)
CODIGO4.Value = Hoja7.Cells(i, 10)
CONSUMO4.Value = Hoja7.Cells(i, 11)
PROD.Value = Hoja7.Cells(i, 3)
End If
Next i

End Sub

El problema que me genera el código es que no todos los productos llevan 4 componentes como se puede ver en la imagen 1. Cuando elijo un material que tiene 4 componentes solo aparecen los 2 primeros. Realice una prueba en poner un producto con 4 materiales en las primeras filas y el Código solo funciona con los primeros productos.

¿Alguien qué me pueda apoyar con este código?

1 Respuesta

Respuesta

El primer inconveniente que observo como para poder comprender y ajustar tu macro, es que no quedan claras cuáles son las hojas de trabajo.

Aquí declaras una hoja (hprod) y luego intentas recorrer sus filas:

Set hprod = Worksheets("productos")
ufila = hprod.Cells(Rows.Count, 2).End(xlUp).Row
For i = 2 To ufila

Pero comparas con Cells(i,2) que al no indicar la hoja se asume la hoja activa.... que puede o no ser la de productos (hprod)

If Cells(i, 2) = Me.NPARTEXISTENTE Then

Y por último pasas información de la Hoja7.... verifica si efectivamente es la hoja con la información.

PD) Te invito a ver el video 11 de mi canal donde comento (en pto 2) acerca del uso de 'Hoja', 'Me' y otros detalles

Sdos.

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas