Por que mi macro solo carga algunos datos de mi tabla y otros no?

Hey que tal expertos! 

Solicito amablemente me orienten, pues tengo una macro que debe llenar un listbox con datos de una tabla en excel 2013, lo curioso es que solo toma en cuenta algunos codigos de cliente, dichos códigos están en la primera columna de mi archivo.  Ya le estuve buscando y no entiendo por qué no considera todos lo registros de mi columna CODOBRA.

Gracias por su ayuda.

1 respuesta

Respuesta
1

Puedes poner la macro para revisarla.

Hola Dante Amor!

Aquí dejo la macro que tan amablemente me proporcionaste anteriormente.

En mi ejemplo solo existian dos clientes (91999-162 y el CC14003). Ahora tengo más de 500 códigos de cliente en mi hoja "OBRAS". El problema es que no se llena el lisbox con los datos de la hoja "RESUMEN" cuando elijo un cliente distinto.  

Private Sub BUSCAR_Click()

application.ScreenUpdating = False
Worksheets("OBRAS)").Activate

If TextBox1 = "" Then
MsgBox "Coloca algun dato para buscar", vbOKOnly + vbInformation, "AVISO"
TextBox1.SetFocus
Exit Sub
End If

'Agrega un rango de celdas
Set rango = Range("D:D").Find(What:=TextBox1, _
LookAt:=xlWhole, LookIn:=xlValues)

If rango Is Nothing Then

MsgBox "El dato no fue encontrado", vbOKOnly + vbInformation, "AVISO"
TextBox1 = "": TextBox1.SetFocus
Exit Sub
'Agrega los valores
Else
TextBox2 = Range("F" & rango.Row)
TextBox3 = Range("E" & rango.Row)
TextBox4 = Range("G" & rango.Row)
TextBox5 = Range("H" & rango.Row)
TextBox6 = Range("I" & rango.Row)
TextBox7 = FormatCurrency(Range("V" & rango.Row).Value)
TextBox13 = Range("J" & rango.Row)
TextBox14 = Range("L" & rango.Row)
TextBox15 = Range("Z" & rango.Row)
TextBox16 = Range("AA" & rango.Row)
On Error Resume Next
'Llena el list con los datos encontrados
ListBox1.Clear
Set h2 = Sheets("RESUMEN")
For i = 2 To h2.Range("A" & Rows.Count).End(xlUp).Row
If h2.Cells(i, "A") = TextBox1 Then
n = ListBox1.ListCount
ListBox1.AddItem
ListBox1.List(n, 0) = h2.Cells(i, "I") 'Art
ListBox1.List(n, 1) = h2.Cells(i, "J") 'Unmed
ListBox1.List(n, 2) = h2.Cells(i, "Q") 'Tot-Art
ListBox1.List(n, 3) = h2.Cells(i, "M") 'No-Req
ListBox1.List(n, 4) = h2.Cells(i, "N") 'Giro
ListBox1.List(n, 5) = h2.Cells(i, "O") 'Espacio
ListBox1.List(n, 6) = FormatCurrency(h2.Cells(i, "R").Value) 'Tot-Compromet
ListBox1.List(n, 7) = h2.Cells(i, "S") 'Fecha
ListBox1.List(n, 8) = FormatCurrency(h2.Cells(i, "Z").Value) 'Tot-Adjud


End If
Next
End If
End Sub

Ya probé la macro y me funciona bien

Te paso con todos los clientes o solamente con algunos.

La búsqueda distingue entre mayúsculas y minúsculas, es decir, si pones cc14003 y se tienes CC14003, no lo va a encontrar, si quieres que no distinga cambia la macro por esta.

Private Sub CommandButton1_Click()
'Private Sub BUSCAR_Click()
Application.ScreenUpdating = False
Worksheets("OBRAS").Activate
If TextBox1 = "" Then
    MsgBox "Coloca algun dato para buscar", vbOKOnly + vbInformation, "AVISO"
    TextBox1.SetFocus
    Exit Sub
End If
'Agrega un rango de celdas
Set rango = Range("D:D").Find(What:=TextBox1, _
        LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
If rango Is Nothing Then
    MsgBox "El dato no fue encontrado", vbOKOnly + vbInformation, "AVISO"
    TextBox1 = "": TextBox1.SetFocus
    Exit Sub
    'Agrega los valores
Else
    TextBox2 = Range("F" & rango.Row)
    TextBox3 = Range("E" & rango.Row)
    TextBox4 = Range("G" & rango.Row)
    TextBox5 = Range("H" & rango.Row)
    TextBox6 = Range("I" & rango.Row)
    TextBox7 = FormatCurrency(Range("V" & rango.Row).Value)
    TextBox13 = Range("J" & rango.Row)
    TextBox14 = Range("L" & rango.Row)
    TextBox15 = Range("Z" & rango.Row)
    TextBox16 = Range("AA" & rango.Row)
    On Error Resume Next
    'Llena el list con los datos encontrados
    ListBox1.Clear
    Set h2 = Sheets("RESUMEN")
    For i = 2 To h2.Range("A" & Rows.Count).End(xlUp).Row
        If UCase(h2.Cells(i, "A")) = UCase(TextBox1) Then
            n = ListBox1.ListCount
            ListBox1. AddItem
            ListBox1.List(n, 0) = h2.Cells(i, "I") 'Art
            ListBox1.List(n, 1) = h2.Cells(i, "J") 'Unmed
            ListBox1.List(n, 2) = h2.Cells(i, "Q") 'Tot-Art
            ListBox1.List(n, 3) = h2.Cells(i, "M") 'No-Req
            ListBox1.List(n, 4) = h2.Cells(i, "N") 'Giro
            ListBox1.List(n, 5) = h2.Cells(i, "O") 'Espacio
            ListBox1.List(n, 6) = FormatCurrency(h2.Cells(i, "R"). Value) 'Tot-Compromet
            ListBox1.List(n, 7) = h2.Cells(i, "S") 'Fecha
            ListBox1.List(n, 8) = FormatCurrency(h2.Cells(i, "Z"). Value) 'Tot-Adjud
        End If
    Next
End If
End Sub

Prueba y me comentas

Añade tu respuesta

Haz clic para o