Como crear un filtro en un combobox

Estoy haciendo un formulario con excel en VBA; dentro de un formulario de recibos, tengo un Combobox el cual me carga todas las facturas de un determinado cliente, al yo guardar, las facturas que he registrado allí, se deben cancelar, (eso ya lo programe), pero necesito que cuando vuelva a cargar este formulario no me vuelvan a aparecen las facturas que ya cancele anteriormente. Es decir, que si tenia las facturas 1525, 1527 y 1528, y cancelé la 1525 y 1528, cuando vuelva a ingresar donde el mismo cliente, solo me cargue la factura 1527.

2 Respuestas

Respuesta
1

[Hola 

[Sugerencia

Cuando realices la cancelación de la factura que la macro agregue en una columna "pagado" voy a suponer que sea la columns "G"

Y luego cuando cargas las facturas al combobox hazlo con la condición de aquellos que no realizaron al pago.

Ejemplo

If cells(i,"G") <> "pagado" Then 
 Combobox.AddItem Cells(i,"A")
End If

Hola Adriel, muchas gracias por tu respuesta, pero de pronto no fui muy claro, te voy a colocar una imagen de lo que estoy haciendo y te comento.

Como puedes ver, tengo un combobox que se llama cmbcliente, allí aparecen todos los clientes, y en cmbfact1, están las facturas que corresponden a ese cliente, yo en la programación que he hecho, tengo unas facturas ya canceladas, la 4507 y 4512, lo que necesito es que cuando vuelva a cargar no me aparezcan las 2 facturas ya mencionadas.

Con el ejemplo que me acabaste de mostrar, lo que hace el combobox es anexarme en las facturas un renglón en blanco al final.

Muchas gracias.

Si, entendí lo que necesitas envíame archivo [email protected] y adecuar la macro, indicando el formulario saludos!

Te paso la macro con los ajustes del combo cliente

Private Sub cmbcliente_Change()
On Error Resume Next
Dim clientes, FACTURA As Range
Dim cuenta, NFACTURA, FILA As Integer
Dim CLIENTE As String
Dim FACTURAS As String
Dim M As Integer
'
Set clientes = Range("CLIENTES")
CLIENTE = cmbcliente.Value
With clientes
    cuenta = WorksheetFunction.CountIf(.Columns(1), CLIENTE)
    FILA = WorksheetFunction.Match(CLIENTE, .Columns(1), 0)
    Set FACTURA = .Rows(FILA).Resize(cuenta)
    FACTURA.Select
    txtfact1.Clear
    For M = 1 To FACTURA.Rows.Count
        NFACTURA = FACTURA.Cells(M, 3)
        If WorksheetFunction.IsText(NFACTURA) = False Then
           txtfact1.AddItem NFACTURA
        End If
    Next M
End With
Set clientes = Nothing: Set FACTURA = Nothing
On Error GoTo 0
'
' CARGA EL 1ER COMBOBOX CON EL No FACTURA SOLO DE ESTE CLIENTE
indicecliente = cmbcliente.ListIndex + 1020 'GUARDA EN MEMORIA EL CODIGO DEL CLIENTE
Dim i As Integer
Txtfact1. Clear 'borra el contenido del combobox para que cada vez que elija un cliente, muestre las facturas correspondientes
txtfact2. Clear
txtfact3. Clear
txtfact4. Clear
txtfact5. Clear
txtfact6. Clear
txtfact7. Clear
txtfact8. Clear
'
With Sheets("facturas")
   For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row ' VA DESDE LA FILA 2 HASTA LA ULTIMA POSICION CON EL TOTAL DE FILAS
    If .Cells(i, 1).Value = indicecliente And .Cells(i, 17) <> "CANCELADO" Then             ' APLICA 2 CONDICIONES
      txtfact1.AddItem .Cells(i, 4).Value
      txtfact2.AddItem .Cells(i, 4).Value
      txtfact3.AddItem .Cells(i, 4).Value
      txtfact4.AddItem .Cells(i, 4).Value
      txtfact5.AddItem .Cells(i, 4).Value
      txtfact6.AddItem .Cells(i, 4).Value
      txtfact7.AddItem .Cells(i, 4).Value
      txtfact8.AddItem .Cells(i, 4).Value
    End If
  Next i
End With
Sheets("recibos").Select
End Sub

Hice ajustes a la macro del combo cliente y agregué una columna "columna Q" para poner como estado CANCELADO

¿No veo la macro para registrar factura aun te falta implementar?

Cuando tengas la macro registrar me avisas para poner la macro como cancelado cuando registres y de esa manera los combobox se filtraran con esa condición

Hola Adriel, Muchísimas gracias por esa ayuda tan grande, si me funcionó correctamente, Dios lo bendiga hermano...

¡Mil Gracias!

Respuesta

Estos ejemplos

https://youtu.be/KCHAk9-dAPM

https://youtu.be/sWrUt9kItsg

Para filtrar hacerlo con if y cargar solos los datos que cumplan los criterios

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas