Mostar y seleccionar en listbox las referencia según código en combobox

Solicito ayuda, no puede llamar a la experta @elsamatilde,

Bien, comencemos... En un userfrom tengo un combobox1 el cual esta asociado a una lista (transportes) ingresando el cuit del transporte en textbox1 y textbox2 me completa los datos del mismo.
Necesito de su ayuda para que cuando elija un cuit (transporte) en el combobox1 aparte d

E completar textbox1/2 en un listbox me muestre las referencia asociadas a el cuit ingresado en combobox1.

Un transporte tiene 10 chóferes, ingreso el cuit en combobox1 y que automáticamente en listbox me llame los datos asociados a este cuit y a su vez que me permita seleccionar el que necesito y poder cargar en un textbox..

Si no fui claro, por favor avisarme en que parte.

Desde ya muchas gracias!

1 Respuesta

Respuesta
1

¿Si te entendí bien lo que esta en la imagen es lo que estas buscando?

Los datos del cuit de transporte se cargan en el combobox1 filtrando los repetidos al momento de cargar el formulario, luego seleccionas del combo el cuit que deseas y te mostrara en el listbox todos aquellos conductores que pertenecen a ese transportista, seleccionas un nombre y este aparecerá en el textbox y esta es la macro

Private Sub ComboBox1_Change()
Set datos = Range("a1").CurrentRegion
ListBox1.Clear
With datos
    filas = .Rows.Count
    .AutoFilter
    .AutoFilter field:=1, Criteria1:=ComboBox1.Value
    For i = 2 To filas
        cuit_cond = .Cells(i, 4)
        If .Rows(i).Hidden = False Then ListBox1.AddItem cuit_cond
    Next i
End With
Set datos = Nothing
End Sub
Private Sub ListBox1_Click()
TextBox2.Text = ListBox1.Value
End Sub
Private Sub UserForm_Initialize()
Set datos = Range("a1").CurrentRegion
With datos
    .AutoFilter
    .Columns(1).Copy
    .Columns(.Columns.Count + 5).PasteSpecial
    With .Columns(.Columns.Count + 5).CurrentRegion
        .RemoveDuplicates Columns:=1
        filas = .CurrentRegion.Rows.Count - 1
        matriz = .Cells(2, .Columns.Count).Resize(filas, 1)
         ComboBox1.List = matriz
         .Clear
    End With
End With
Set datos = Nothing
End Sub

Hola James, gracias por tu tiempo..

Te comento que el código va perfecto, solo tengo unas líneas las cuales agradecería que me ayudes un poco más.

El código funciona, me faltaría que me indiques por favor, que al seleccionar el chófer, en los textbox síguetes (rzchofer, Cuilchofer, Chasis y Acoplado) me traiga los datos una ves selexcionado el chófer en el listbox. Como veras ahora solo me pega en esos textbox el nombre del chófer que aparece en la listbox.

Como lo mencione el código funciona, si un poco lento, creo que debe ser por la cantidad de transporte que están en la lista.

Te adjunto imagen y el código de como se ve el formulario.

Private Sub ComboBox1_Change()
Set datos = Sheets("Listado Transport").Range("a1").CurrentRegion
ListBox1.Clear
With datos
    filas = .Rows.Count
    .AutoFilter
    .AutoFilter field:=1, Criteria1:=ComboBox1.Value
    For i = 2 To filas
        cuit_cond = .Cells(i, 4)
        If .Rows(i).Hidden = False Then ListBox1.AddItem cuit_cond
    Next i
End With
Set datos = Nothing
End Sub
Private Sub ListBox1_Click()
rzchof.Text = ListBox1.Value
cuilchofer.Text = ListBox1.Value
chasis.Text = ListBox1.Value
acoplado.Text = ListBox1.Value
End Sub
Private Sub UserForm_Initialize()
Set datos = Sheets("Listado Transport").Range("a1").CurrentRegion
With datos
    .AutoFilter
    .Columns(1).Copy
    .Columns(.Columns.Count + 5).PasteSpecial
    With .Columns(.Columns.Count + 5).CurrentRegion
        .RemoveDuplicates Columns:=1
        filas = .CurrentRegion.Rows.Count - 1
        matriz = .Cells(2, .Columns.Count).Resize(filas, 1)
         ComboBox1.List = matriz
         .Clear
    End With
End With
Set datos = Nothing
End Sub
 

James, acá conseguí una imagen la cual hace referencia a lo que estoy solicitando...

Creo que al código que me brindas no le falta mucho, solo que no tengo el mayor conocimiento como para agregar esto..

Te dejo la imagen.

Así debería hacer cuando selecciono uno de los chóferes según el transporte.

De entrada la pregunta ya se respondió y fue como le hago para filtrar un cuit del transportista, seleccionar del listbox1 un chófer y que el nombre de este aparezca en el textbox, lo adicional que quieres ya es un tema aparte, eso por un lado, por el otro para lo que quieres se necesita ver toda tu tabla para saber como tienes distribuidos los datos y así saber como manipularlos, por lo que dices ya se que solución darle solo que sin saber en que columna están los datos que pides pues esta difícil, a manera de sugerencia sube un ejemplo de tu archivo en google drive u otro servicio de la nube y pega el link para adaptar la macro a lo que quieres.

James, los datos que necesitonagregar son los mismos que usaste para el codigo anterior.

por eso aclaraba que, cuando se elija el transporte en listbox saldran los choferes asociados a ese cuit, luego al seleccionar uno de los choferes en los textbox se carguen, ejemplo, textbox1= chofer, textbox2 =cuil chofer, textbox3= patente..

estos datos están en la columna que usaste para este codigo, solo que hacía la derecha, lo podes ver en las imágenes de arriba publicada.

usamos para el chofer del listbox 

Cells(i, 4)
entonces el cuil esta en la cells(i,5)

solo ese necesito agregar, que en el listbox salga el chofer mas sus otros datos cuil, chasis, Acoplado

 disculpa si no fui claro.. pero si es algo enredado.

Cells(i, 4)

En la imagen veras el resultado de la macro, la hice un poco más rápida para que no cargue los nombres filtrados de 1 en 1 sino todos al mismo tiempo solo que para que funcione debes crear antes de correrla una hoja que se llame Auxiliar, en esa hoja lo que se filtre en el combobox sera copiado y luego cargado en el listbox y una vez que selecciones el conductor esta cargara los datos en los textbox

Private Sub ComboBox1_Change()
Set datos = Range("A1").CurrentRegion
CUIT_TRANS = ComboBox1.Value
Set H = Sheets("AUXILIAR")
H.Cells.Clear
With datos
    .AutoFilter
    .AutoFilter FIELD:=1, Criteria1:=CUIT_TRANS
    .Copy
    H.Range("B5").PasteSpecial
    Set tabla = H.Range("B5").CurrentRegion
    With tabla
        FILAS = .Rows.Count: COL = .Columns.Count
        MATRIZ = .Cells(2, 4).Resize(FILAS, COL - 2)
        With ListBox1
            .ColumnCount = COL
            .ColumnWidths = "100;40;60"
            .List = MATRIZ
        End With
    End With
    .AutoFilter
End With
End Sub
Private Sub ListBox1_Click()
With ListBox1
    INDICE = .ListIndex
    NOMBRE = .Value
    PATENTE1 = .List(INDICE, 1)
    PATENTE2 = .List(INDICE, 2)
End With
TextBox1.Text = NOMBRE
TextBox2.Text = PATENTE1
TextBox3.Text = PATENTE2
Set tabla = Nothing: Set datos = Nothing
End Sub
Private Sub UserForm_Initialize()
Set datos = Range("A1").CurrentRegion
With datos
    FILAS = .Rows.Count - 1
    COL = .Columns.Count
    .Rows(2).Resize(FILAS).Copy
    .Columns(COL + 4).PasteSpecial
    .Columns(COL + 4).CurrentRegion.RemoveDuplicates Columns:=1
    MATRIZ = .Columns(COL + 4).CurrentRegion
    ComboBox1.List = MATRIZ
    .Columns(COL + 4).CurrentRegion.Clear
End With
Set datos = Nothing
End Sub

¡Gracias! James, totalmente agradecido, logre llegar a mi necesidad gracias. Tu conocimiento.

Quedó espectacular.

Abrazo grande!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas