¿Cómo copiar o filtrar datos de una celda a un LISTBOX, según TEXTBOX? Visual Basic

Aquí te pregunto de nuevo, tal y como me lo dijiste.

Mientras esperaba que me respondiesen en todoexpertos, hice algunas modificaciones a mi formulario, por lo que cuando pego el código que me estas brindando no se adapta a las nuevas funciones.
Por favor, ¿pero podrías pegar ese código o adaptarlo a este nuevo formulario?.

- El formulario ahora tiene un búsqueda inteligente.(Ejemplo:ingresa un nombre pedro y busca todas las celdas con pedro)

- Agregué meses (cuando ingreses el nombre selecciona solo Marzo)

CLICK AQUI PARA DESCARGAR ARCHIVO

1 respuesta

Respuesta
1

Te regreso el código con las adecuaciones:

Private Sub boton_buscar_Click()
'Act.Por.Dante Amor
    ' Estoy deshabilitando el parpadeo de pantalla
    Application.ScreenUpdating = False
    ' Estoy indicandole que se ubique en la hoja de datos
    Sheets("MARZO").Select
    ' Estoy poniendo una condicion, si no hay texto en en textbox mostrar msgbox
    If Me.txt_nombre.Value = Empty Then
        MsgBox "No ha ingresado ningún nombre.", vbInformation + vbOKOnly, "Búsqueda."
        Me.ListBox1.Clear
        Me.ListBox2.Clear
        Me.txt_nombre.SetFocus
    End If
    ' Estoy poniendo condicion ha los CheckBox
    If CheckBox1 = False And CheckBox2 = False And CheckBox3 = False And CheckBox4 = False And CheckBox5 = False Then
        MsgBox "No ha seleccionado ningún MES." + Chr(10) + "Por favor seleccione un MES para iniciar la búsqueda.", vbInformation + vbOKOnly, "Búsqueda."
    End If
    If CheckBox1 = True Then
        ' Limpiando el listbox
        ListBox1.Clear
        ListBox2.Clear
        Set h = Sheets("MARZO")
        Set r = h.Columns("B")
        Set b = r.Find(txt_nombre, lookat:=xlPart)
        If Not b Is Nothing Then
            ncell = b.Address
            Do
                ListBox1.AddItem Cells(b.Row, "B")
                ListBox1.List(ListBox1.ListCount - 1, 1) = Format(h.Cells(b.Row, "C"), "#0.00")
                ListBox1.List(ListBox1.ListCount - 1, 2) = Format(h.Cells(b.Row, "D"), "#0.00")
                ListBox1.List(ListBox1.ListCount - 1, 3) = Format(h.Cells(b.Row, "E"), "#0.00")
                ListBox1.List(ListBox1.ListCount - 1, 4) = Format(h.Cells(b.Row, "F"), "#0.00")
                '
                On Error Resume Next
                ListBox2. AddItem Cells(b.Row, "G")
                ListBox2. List(ListBox2.ListCount - 1, 1) = h. Cells(b.Row, "H")
                ListBox2. List(ListBox2.ListCount - 1, 2) = h. Cells(b.Row, "I")
                ListBox2. List(ListBox2.ListCount - 1, 3) = h. Cells(b.Row, "J")
                ListBox2. List(ListBox2.ListCount - 1, 4) = h. Cells(b.Row, "K")
                ListBox2. List(ListBox2.ListCount - 1, 5) = h. Cells(b.Row, "L")
                ListBox2. List(ListBox2.ListCount - 1, 6) = h. Cells(b.Row, "M")
                ListBox2. List(ListBox2.ListCount - 1, 7) = h. Cells(b.Row, "N")
                ListBox2. List(ListBox2.ListCount - 1, 8) = h. Cells(b.Row, "O")
                ListBox2. List(ListBox2.ListCount - 1, 9) = h. Cells(b.Row, "P")
                On Error GoTo 0
                Set b = r.FindNext(b)
                '
                Me.txt_nombre.SetFocus
                Me.txt_nombre.SelStart = 0
                Me.txt_nombre.SelLength = Len(Me.txt_nombre.Text)
            Loop While Not b Is Nothing And b.Address <> ncell
        Else
            MsgBox ("El nombre no existe"), vbExclamation, "Búsqueda."
        End If
    End If
    Application.ScreenUpdating = True
End Sub

El archivo:

https://www.dropbox.com/s/wjodkexw3yy8zkw/Proyecto%20de%20PRODUCCION%20NUEVO%20dam2.xlsm?dl=0 


Para lo de los meses, crea una nueva pregunta y me explicas lo que necesitas.

Saludos. Dante Amor

Recuerda valorar la respuesta.

¡Gracias Dante! Funciona bien, pero cuando pongo en el buscador la letra "C" y selecciono que busque en la hoja MARZO o ABRIL, realiza la búsqueda pero también sale el encabezado. 

                

Me parece que esta leyendo tambien el  encabezado, ¿Cómo evito que lea el encabezado?.
Y por último disculpa mi ignorancia, pero por que pusiste On Error Resume Next y On Error Go To 0, en los Listbox?


Aquí te dejo el nuevo archivo. CLIC PARA DESCARGAR EL ARCHIVO


                    

Cambia en la macro esta línea

Set r = h.Columns("B")

Por esta

Set r = h.Range("B2:B" & h.Range("B" & Rows.Count).End(xlUp).Row)

'

La instrucción On Error Resume Next, la puse porque tienes este error en la celda: #¡DIV/0! , por ese error al momento de cargar el listbox genera un error en la macro, entonces lo que hace la instrucción On Error Resume Next, es pasar al siguiente campo.

Esta instrucción On Error GoTo 0, deshabilita la instrucción On Error Resume Next, eso significa que si ocurre un error en la macro, se debe detener y avisarte el tipo de error.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas