Combobox dependientes y filtro dinámico, que elimine un serial después de ser usado

Acudo a ustedes con el animo de que me colaboren en la programación del formulario adjunto a este tema.
La idea es programar tres combobox dependientes.
El Combobox 1, debe filtrar y cargar los valores únicos de la comuna "Tipo" en la Tabla1, la cual está en la hoja "Equipos".
El combobox 2, debe cargar y mostrar los elementos de la columna "Descripción", los cuales ya deben hacer sido filtrados de acuerdo al tipo de elemento, ya sea "Equipo" o "Periférico".
Y finalmente el combobox 3, debe mostrar los seriales de esos elementos que están en el combobox 2.
Una vez el operador de la aplicación seleccione un serial del elemento en el combobox 3, ese serial debe escribirse automáticamente en el TextBox7 del formulario Asignación. Cuando se de Click en el Botón "Asignar", el serial seleccionado, ya no debe estar disponible en el Combobox 3, ni tampoco la descricpción de ese elenento en el combobox 2, hasta tanto, no se indique que el elemento ha sido devuelto.
El estado se cambia con base en el botón DEVOLVER, si en el "Estado" de cada elemento dice "Disponible", el equipo puede aparecer en los combo box para ser prestados o asignados.
Pero si en el Estado de cada elemento aparce que está "Prestado", entonces no debe aparecer para ser asginado, pero si debe aparecer en los combobox de los elementos para DEVOLUCIÓN.
Bueno, esa es más o menos la idea con el formulario.

1 respuesta

Respuesta
2

H o l a:

Son varias peticiones en una sola pregunta, si estás de acuerdo, te apoyo con cada petición peo deberás crear una pregunta por cada petición.

Envíame tu archivo con el formulario para realizar la primera petición:

"

El Combobox 1, debe filtrar y cargar los valores únicos de la comuna "Tipo" en la Tabla1, la cual está en la hoja "Equipos".

"

Recuerda poner en el asunto del correo tu nombre de usuario.

':)

S a l u d o s . D a n t e   A m o r

¡Gracias! 

Hola Dante, te acabo de enviar el fichero. Muchas gracias por tu interés en ayudarme. En el documento hay unas explicaciones, pues ya he logrado avanzar un poquito. 

H o l a:

Te anexo el código hasta el combo6

Dim h1
'
Private Sub ComboBox1_Change()
    ComboBox2. Clear
    ComboBox3. Clear
    ComboBox4. Clear
    ComboBox5. Clear
    ComboBox6. Clear
    ComboBox7. Clear
    u = h1.Range("C" & Rows.Count).End(xlUp).Row
    For i = 10 To u
        If h1.Cells(i, "C") = ComboBox1 Then
            AddItem ComboBox2, h1.Cells(i, "D")
        End If
    Next
End Sub
Private Sub ComboBox2_Change()
    ComboBox3. Clear
    ComboBox4. Clear
    ComboBox5. Clear
    ComboBox6. Clear
    ComboBox7. Clear
    ComboBox3. SetFocus
    u = h1.Range("C" & Rows.Count).End(xlUp).Row
    For i = 10 To u
        If h1.Cells(i, "C") = ComboBox1 And _
            h1.Cells(i, "D") = ComboBox2 Then
                AddItem ComboBox3, h1.Cells(i, "E")
        End If
    Next
End Sub
Private Sub ComboBox3_Change()
    ComboBox4. Clear
    ComboBox5. Clear
    ComboBox6. Clear
    ComboBox7. Clear
    ComboBox4. SetFocus
    u = h1.Range("C" & Rows.Count).End(xlUp).Row
    For i = 10 To u 'AQUI
        If h1.Cells(i, "C") = ComboBox1 And _
            h1.Cells(i, "D") = ComboBox2 And _
            h1.Cells(i, "E") = ComboBox3 Then
                AddItem ComboBox4, h1.Cells(i, "F")
        End If
    Next
End Sub
Private Sub ComboBox4_Change()
    ComboBox5.Clear
    ComboBox6.Clear
    ComboBox7.Clear
    ComboBox5.SetFocus
    u = h1.Range("C" & Rows.Count).End(xlUp).Row
    For i = 10 To u 'AQUI
        If h1.Cells(i, "C") = ComboBox1 And _
            h1.Cells(i, "D") = ComboBox2 And _
            h1.Cells(i, "E") = ComboBox3 And _
            h1.Cells(i, "F") = ComboBox4 Then
                AddItem ComboBox5, h1.Cells(i, "G")
        End If
    Next
End Sub
Private Sub ComboBox5_Change()
    ComboBox6.Clear
    ComboBox7.Clear
    ComboBox6.SetFocus
    u = h1.Range("C" & Rows.Count).End(xlUp).Row
    For i = 10 To u 'AQUI
        If h1.Cells(i, "C") = ComboBox1 And _
            h1.Cells(i, "D") = ComboBox2 And _
            h1.Cells(i, "E") = ComboBox3 And _
            h1.Cells(i, "F") = ComboBox4 And _
            h1.Cells(i, "G") = ComboBox5 Then
                AddItem ComboBox6, h1.Cells(i, "H")
        End If
    Next
End Sub
Private Sub ComboBox6_Change()
    ComboBox7.Clear
    ComboBox7.SetFocus
    u = h1.Range("C" & Rows.Count).End(xlUp).Row
    For i = 10 To u
        If h1.Cells(i, "C") = ComboBox1 And _
            h1.Cells(i, "D") = ComboBox2 And _
            h1.Cells(i, "E") = ComboBox3 And _
            h1.Cells(i, "F") = ComboBox4 And _
            h1.Cells(i, "G") = ComboBox5 And _
            h1.Cells(i, "H") = ComboBox6 Then
                AddItem ComboBox7, h1.Cells(i, "I")
        End If
    Next
End Sub
Private Sub ComboBox7_Change()
End Sub
Private Sub UserForm_Activate()
'Act.Por.Dante Amor
    Set h1 = Sheets("Equipo")
    For i = 10 To h1.Range("C" & Rows.Count).End(xlUp).Row
        AddItem ComboBox1, h1.Cells(i, "C")
    Next
End Sub
'
Sub AddItem(cmbBox As ComboBox, sItem As String)
    'Agrega los item únicos y en orden alfabético
    For i = 0 To cmbBox.ListCount - 1
        Select Case StrComp(cmbBox.List(i), sItem, vbTextCompare)
            Case 0: Exit Sub 'ya existe en el combo, no lo agrega
            Case 1: cmbBox.AddItem sItem, i: Exit Sub 'Es menor, lo agrega antes del comparado
        End Select
    Next
    cmbBox.AddItem sItem 'Es mayor lo agrega al final
End Sub

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas