Como hacer Combobox dependientes en un formulario ?

Tengo un formulario a través del cual introduzco "filas" de una base de datos a diferentes combobox, mi objetivo es, si yo cambio el valor de uno de estos combobox, que automáticamente todos los demás se me cambien al valor correspondiente en la base de datos, ejemplo:

Código muestra: P6412

Código cliente:00731234

Centro: UPM

Si cambiara el combobox que controla el apartado muestra y clickara el valor P6412 los demás combobox se deberían cambiar automáticamente a los valores que correspondientes a esa muestra.

Cabe destacar que la base de datos se encuentra en otra hoja excel y los datos son introducidos en los combobox antes de realizar cualquier operación.

Respuesta
1

¿Comienzas con una base de datos en blanco al principio comprendo no?, todos los datos son cargados en una hoja de excel en diferentes columnas y se actualiza el combobox. ¿Así debe funcionar?

La base de datos es otro libro de excel y esta rellena. Si, en efecto los datos son cargados desde ese otro libro al libro en el que esta el formulario.

Muchas gracias por tu ayuda, aunque ya solucione el problema.

Lo que hice fue cargar los datos en los combobox y luego abrir el apartado combobox1.change y ahí meter líneas de código que decían algo por el estilo(No recuerdo exactamente las palabras)

Combobox2. Listindex=combobox1listindex

Hago esto con todos los combobox para, cuando modifique uno se adapte el valor correspondiente (en del registro) en los demás combobox.

Muchas gracias de antemano por su ayuda.

Para servirte amigo, cualquier duda aquí seguimos en contacto

1 respuesta más de otro experto

Respuesta
1

Te anexo el código para 3 combos, funciona si los combos se llaman

Combobox1

Combobox2

Combobox3

Los datos del combo1 tienen que estar en la columna A

Los datos de combo2 en la B

y el combo3 en la C

Cambia en la macro "Base de datos" por el nombre de la hoja en donde tienes los datos para cargar en los combos.

Dim h1
'
Private Sub ComboBox1_Change()
    cargar 2
End Sub
'
Private Sub ComboBox2_Change()
    cargar 3
End Sub
'
Private Sub UserForm_Activate()
'Por.Dante Amor
    Set h1 = Sheets("Base de datos")
    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
        agregar ComboBox1, h1.Cells(i, "A")
    Next
End Sub
'
Sub agregar(combo As ComboBox, dato As String)
'Por.Dante Amor
    For i = 0 To combo.ListCount - 1
        Select Case StrComp(combo.List(i), dato, vbTextCompare)
            Case 0: Exit Sub
            Case 1: combo.AddItem dato, i: Exit Sub
        End Select
    Next
    combo.AddItem dato
End Sub
'
Sub cargar(ini)
'Por.Dante Amor
    For i = ini To 3
        Controls("ComboBox" & i).Clear
    Next
    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
        For j = 1 To ini - 1
            valor = IIf(IsNumeric(Controls("ComboBox" & j)), _
                Val(Controls("ComboBox" & j)), Controls("ComboBox" & j))
            If h1.Cells(i, j) = valor Then
                igual = True
            Else
                igual = False
                Exit For
            End If
        Next
        If igual Then agregar Controls("ComboBox" & ini), h1.Cells(i, ini)
    Next
End Sub

Si tienes dificultades para adaptar la macro, envíame tu archivo y me dices qué columna pertenece a cuál combo.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Miguel Ángel Razquin Noblecilla” y el título de esta pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas