Filtrar datos en combobox

Buen día, el caso es el siguiente:
Tengo una base datos que necesito filtrar en un combobox, logro hacer que me aparezca los datos pero me pone todos, muchos son repetidos necesito que solo los muestre una sola vez y ademas los ordene alfabéticamente como cuando insertamos filtro desde un hoja de excel y abrimos para consultarlos o filtrar. Me pueden ayudar comoseria el código el vb ya que obviamente tengo un formulario. La hoja se llama pedido-datos, la columna es la "c" y el encabezado esta en la fila 2.
Gracias

1 Respuesta

Respuesta
1
La única forma que se me ocurre es que hagas una comparación de cada celda con un valor que tu des, por ejm:
For R = 3 To Range("C" & Rows.Count).End(xlUp).row
     if Cells(R, "C") Like "*Valor*" then 
          Combobox.AddItem Cells(R, "C")
     end if
Next
El "*" es un comodín, si lo pones al principio, es lo que diga al principio, si lo pones al final es lo que diga después del valor que tu pongas
Gracias, pero me marca error.
Uso este código, pero te repito veo todo los datos de cada una de las filas de la columna, pero no logro hacer un código que me permita hacer un filtro avanzado donde, solo aparezcan los valores una sola vez, es decir no considere los repetidos y que ademas me muestre en forma alfabética, esto solo es para consulta en un combobox, en la base de datos no voy a modificar nada
Por ello comentaba que es algo parecido al insertar el filtro de excel, cuando lo abrimos muestra lo de la columna en forma alfabética y un solo registro para poder seleccionar todos lo similares.
Range("$c$3:$c$300").Select
Do While ActiveCell <> Empty
ActiveCell.Offset(1, 0).Select
ComboBox1.AddItem ActiveCell
Si entendí bien, lo que quieres es que se carguen en el combobox los elementos sin repetirse, usa este código:
Private Sub UserForm_Initialize()
Dim U As Integer
Dim N As String
Dim V As Boolean
U = Range("A" & Rows.Count).End(xlUp).Row
V = False
For R = 2 To U
    N = Cells(R, "A")
    With Me.ComboBox1
    If .ListCount < 1 Then
        .AddItem N
        GoTo SIG
    End If
        For I = 0 To .ListCount - 1
            .ListIndex = I
            If N = .Object Then
                V = True
            End If
        Next
        If V = False Then .AddItem N: V = False
    End With
SIG:
Next
Me.ComboBox1.ListIndex = 0
End Sub
Hola, primero una disculpa, no quise decirte que no entendieras solo quise ampliar mi duda.
Gracias con tu código logre hacer que se viera la lista en el combobox, sin embargo al llegar al llegar por ejemplo al caso en que la fila 5 dice "direccion" y la fila 6 también "direccion", el código se detiene, solo lo muestra una vez pero ya no sigue mostrando el resto de la lista, en esta lista esto sucede constantemente; aparecen datos repetidos en varias filas consecutivas y nuevamente el mismo dato más adelante y con otros datos la misma situación, por ello te comenta que, cuando en excel quieres filtrar los datos al abrir la flechita y desplegarse el cuadro de información, aparecen todos los datos pero los agrupa y solo los muestra una vez para seleccionarlos. Algo así es lo que que pretendo. Supongo que si se puede lograr, usted es el experto me podrá decir o al menos llegar a lo más parecido posible. GRACIAS
Este código si me funciono así como dices, lo probé en un archivo que cree con registros repetidos y lo hizo correctamente, si quieres mejor mandarme tu archivo [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas