Problemas para mostrar datos en un listbox VBA

Cerrado
efranceschi
Message postés
1
Date d'inscription
jueves, 15 de agosto de 2013
Estatus
Miembro
Última intervención
jueves, 15 de agosto de 2013
- 15 ago 2013 a las 01:10
Buenas amigos, estoy implementando una macro (creo que así se dice, ya que soy Nuevo en este mundo) en la que yo pueda hacer una búsqueda y me muestre los resultados. Ahora bien, mi problema es el siguiente:

Logro que un Combobox me muestre las 2 opciones por búsqueda que tengo (cliente y vendedor) y al marcar cualquiera de estos, el Listbox2 que tengo me debería cargar solo la columna que necesito (nuevamente cliente o vendedor) pero me muestra muchos más datos de los que necesito reflejar, estos datos son de las listas de excel de donde estoy obteniendo los resultados que se van agregando.

Les explico rápidamente: la hoja de excel maneja 19 columnas de datos importantes, pero la búsqueda que necesito hacer solo me debe reflejar en el Listbox1 el nombre del cliente(columna A) y el número de cotización (columna S) cuando marco la búsqueda por vendedor, o el nombre del vendedor(columna F) y el número de cotización cuando escojo la búsqueda por cliente. (logro que me muestre siempre el cliente y número de cotización, indiferentemente de la búsqueda que haga)

Entonces la ayuda que necesito, si pudieran ayudar se los agradezco de corazón, es:
1- Mostrar en el Listbox2 solo el nombre del vendedor o del cliente, según la escogencia en el combobox1.
2- Mostrar en el Listbox1 los datos necesarios, (si escojo vendedor, el cliente y cotiza, si escojo cliente, nombre de vendedor y cotiza)

Adjunto las líneas de código, por si mepueden ayudar. GRACIAS!!!

*********

Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
ordena:
'Evito movimientos de la pantalla
Application.ScreenUpdating = False
Dim fila, a, colum1 As Integer
On Error Resume Next
'Borra datos del l istbox
ListBox1.Clear

a = 0
fila = 2

'Selecciono columna donde buscar
d = Combobox1

Select Case d
Case "CLIENTE"
colum1 = 1
Case "VENDEDOR"
colum1 = 6
End Select

'Bucle mientras la fila no esté vacia
While Sheets("# COTIZACION").Cells(fila, colum1) <> Empty
d = ListBox2.Value
'Si el dato de la fila coincide con textbox carga los datos al listbox

If Sheets("# COTIZACION").Cells(fila, colum1) = d Then

'Copia los datos de la celda list box
a = ListBox1.ListCount
ListBox1.AddItem
ListBox1.List(a, 0) = Sheets("# COTIZACION").Cells(fila, 1)
ListBox1.List(a, 2) = Sheets("# COTIZACION").Cells(fila, 19)

End If

'Aumento la fila para que pase a la siguiente
fila = fila + 1
Wend


'Mostrar el número de entradas en el ListBox1.
USERFORM1.Label8.Caption = "Total Registros: " & a + 1


'Devuelvo movimientos de la pantalla
Application.ScreenUpdating = True

End Sub


Private Sub Combobox1_Change()
'Evito movimientos de la pantalla
Application.ScreenUpdating = False
Dim fila2, colum2, b, uf As Integer
Dim col As String
'Dim ran As Range
Dim DSR As New Collection

On Error Resume Next
'Borra datos del listbox
ListBox2.Clear

b = 0
fila2 = 2

'Selecciono columna donde buscar
dato = Combobox1

Select Case dato
Case "CLIENTE"
colum1 = 1
Case "VENDEDOR"
colum1 = 6
End Select

Select Case colum2
Case 1
col = "A"
Case 6
col = "F"
End Select

'Determina rango de datos a cargar al listbox
uf = Sheets("# COTIZACION").Range("A" & Rows.Count).End(xlUp).Row 'Hacer referencia a la ultima fila con datos
ran = col & fila2 & ":" & col & uf

For Each Celda In Range(ran)
DSR.Add Celda.Value, CStr(Celda.Value)
Next Celda

'Agregar elementos a la lista
For Each Item In DSR
USERFORM1.ListBox2.AddItem Item
Next Item

'Mostrar el número de entradas en el ListBox1.
USERFORM1.Label7.Caption = "Total Registros: " & DSR.Count


'Devuelvo movimientos de la pantalla
Application.ScreenUpdating = True
End Sub



Private Sub UserForm_Initialize()

Label2.Caption = Sheets("# COTIZACION").Cells(1, 1)
Label4.Caption = Sheets("# COTIZACION").Cells(1, 19)

Label7.Caption = Clear
Label8.Caption = Clear

Combobox1.AddItem ("CLIENTE")
Combobox1.AddItem ("VENDEDOR")


End Sub