Cargar un combobox2 a partir del combobox1

Necesito hacer un código el cual a partir del dato que selecciono del combobox1, me cargue automáticamente datos en el combobox 2 para poder trabajar.

  • Los datos del combobox 1 son clientes y están en la hoja CLIENTES.
  • Los datos del combobox 2 son proyectos y están en la hoja COTIZACIONES.

Al elegir del combobox1 el nombre del cliente, en el combobox2 se deben cargar todos los proyectos asociados a ese cliente.

Ambos combobox están incrustados en las hojas con ActiveX

Este es mi código, pero no me funciona. Sólo carga bien el combobox1

Dim cliente As String
Private Sub ComboBox1_Click()
Range("H6").Value = ComboBox1.Value
End Sub

Private Sub CommandButton1_Click()
'borra los datos del combobox2
ComboBox2.Clear
Set h = Sheets("CLIENTES")
For i = 7 To h.Range("B" & Rows.Count).End(xlUp).Row
ComboBox1.AddItem h.Cells(i, "B")
Next
cliente = Range("H6").Value
'cargar datos combobox2
Set h2 = Sheets("COTIZACIONES")
For i = 4 To h2.Range("B" & Rows.Count).End(xlUp).Row
If Range("D4") = cliente Then
ComboBox2.AddItem h.Cells(i, "D")
End If
Next
Worksheets("FORMULARIO").Cells(6, "H").Clear
End Sub

Espero que me puedan ayudar,

2 Respuestas

Respuesta
2

H o l a:

Pon los siguientes códigos en la hoja donde tienes los combobox.

Para cagar el combobox1, al momento de hacer click en la flecha del combobox1, se cargan los datos, por lo tanto, no es necesario un commandbutton:

Private Sub ComboBox1_DropButtonClick()
'Act.Por.Dante Amor
    'Cargar en el combobox1
    Set h1 = Sheets("CLIENTES")
    For i = 7 To h1.Range("B" & Rows.Count).End(xlUp).Row
        ComboBox1.AddItem h1.Cells(i, "B")
    Next
End Sub

Ahora, cuando seleccionas un cliente del combobox1 se cargan los datos en el combobox2, tampoco es necesario el commandbutton:

Private Sub ComboBox1_Change()
'Por.Dante Amor
    'Cargar en el combobox2
    Set h1 = Sheets("CLIENTES")
    Set h2 = Sheets("COTIZACIONES")
    h1.Range("H6") = ComboBox1
    ComboBox2.Clear
    For i = 4 To h2.Range("B" & Rows.Count).End(xlUp).Row
        If h2.Cells(i, "B") = ComboBox1 Then
            ComboBox2.AddItem h2.Cells(i, "D")
        End If
    Next
End Sub

Lo que no me queda claro es lo siguiente, en cuál columna de la hoja "COTIZACIONES" están los clientes y en cuál columna están las cotizaciones; en la macro puse que los clientes están en la columna "B" y que las cotizaciones están en la columna "D".


Entonces, cambia el código por el que te estoy enviando, si tienes algún detalle avísame.


Muchas gracias Dante por tu ayuda, al final arreglé mi código así:

y me cargan ambos combobox bien.

Private Sub ComboBox1_DropButtonClick()

'Cargar en el combobox1
Set h1 = Sheets("CLIENTES")
For i = 7 To h1.Range("B" & Rows.Count).End(xlUp).Row
ComboBox1.AddItem h1.Cells(i, "B")
Next
End Sub
Private Sub ComboBox1_Change()
'Cargar en el combobox2
Set h1 = Sheets("CLIENTES")
Set h2 = Sheets("COTIZACIONES")
Set h3 = Sheets("FORMULARIO")
h3.Range("H6") = ComboBox1
ComboBox2.Clear
For i = 4 To h2.Range("D" & Rows.Count).End(xlUp).Row
If h2.Cells(i, "D") = ComboBox1 Then
ComboBox2.AddItem h2.Cells(i, "C")
End If
Next
End Sub

En esta parte de la macro, tienes que agregar que se limpie el combobox1:

Private Sub ComboBox1_DropButtonClick()
'Act.Por.Dante Amor
    'Cargar en el combobox1
    Set h1 = Sheets("CLIENTES")
    ComboBox1.clear
    For i = 7 To h1.Range("B" & Rows.Count).End(xlUp).Row
        ComboBox1.AddItem h1.Cells(i, "B")
    Next
End Sub

sal u dos

Respuesta

Te recomiendo este vídeo y le adecuas a tus necesidades.

https://www.youtube.com/watch?v=6ZrbszEhjjc 

Valora la respuesta para finalizar Saludos!

No entiendo tu código en la parte del relleno del combobox 2.

En mi caso para rellenar el segundo combobox, la macros debe buscar todos los proyectos asociados a un cliente,y esa información es la que se carga.

Muestra la hoja clientes y cotizaciones y tu form.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas