¿Cómo ligar dos combobox en vba Excel?

¿Formulario?

Tengo dos combobox en un formulario de control de inventario, el primero contiene códigos de identificación de materiales y el segundo contiene la descripción del material, P/e:

10001-Material 1

10002-Material 2, etc, etc

Tengo el siguiente código pero solo funciona con un solo código de material que de hecho agregue el material con otra función del formulario. Pienso que debe ser por el tipo de formato que tiene la celda, ya lo cheque pero aun así no encuentro la solución

Lo que quiero lograr es que cuando quiera realizar una búsqueda por código esté sincronizado con la descripción del material por ejemplo si selecciono el material 10003 aparezca "material 3" en el otro combobox.

Les dejo mi formulario. A ver si alguien me puede ayudar

Private Sub Codigo_Change() 'Este evento es el combobox1
 Dim i As Integer
    If Me.Codigo = "" Then    'Este objeto es el combobox1
    Me.Descripcion = ""     'Este objeto es el combobox2
    End If
    For i = 2 To 5000
    If Me.Codigo = Hoja2.Cells(i, 1).Value Then
    Me.Descripcion = Hoja2.Cells(i, 2).Value
    End If
    Next i
End Sub

1 Respuesta

Respuesta
1

Cambia la forma en que cargas tu combo Codigo y utiliza la forma que te estoy poniendo en el evento Activate:

Private Sub Codigo_Change()
    Descripcion.value = ""
    If Codigo.value = "" Or Codigo.ListIndex = -1 Then
        Exit Sub
    End If
    fila = Codigo.ListIndex + 2
    Descripcion.value = Hoja2.Cells(fila, "B")
End Sub
'
Private Sub UserForm_Activate()
    For i = 2 To Hoja2.Range("A" & Rows.Count).End(xlUp).Row
        Codigo.AddItem Hoja2.Cells(i, "A")
    Next
End Sub

Si los códigos se empiezan a cargar desde la fila 2, entonces en el index del combo codigo + 2 tenemos el número de fila de la hoja, entonces cargamos en el combo descripcion la fila y la columna B

Si escribes un blanco o cualquier otro dato en el combo codigo, entonces significa que no has elegido ningún dato del combo, por eso puse un Exit Sub.

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Muchas gracias por la respuesta

Solo tengo 2 comentarios:

1.- Para poder utilizar el teclado en el combobox fue necesario quitar la primera instrucción

descripcion.value=" "

No se si afecte en el código, lo prove y no hubo ningún problema

2.-Mi formulario se divide en 4 Frames, los 4 tienen estos 2 combobox para poder realizar diferentes tareas en cada uno de ello. Mi pregunta aquí sería los otros 6 combobox los programo de la misma manera pero unicamente en el evento del combobox_change, ¿cierto? No es necesario poner otra vez el evento initialize

1. Descripcion.value  = ""   set utiliza para lo siguiente. Selecciona un valor cualquiera de los datos del combo codigo; en automático el combo descripcion se llena. Ahora borra el dato del combo codigo, en automático también se borra el combo descripcion

2. Tienes que hacer la carga en los combos de cada frame ya que son diferentes combos.

Sal u dos, si ya no tienes dudas, podrías cambiar la valoración a la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas