Leer listbox y llenar variables con los datos seleccionados

Tengo un listbox con los datos de una matricula y los conductores que ha tenido. Quiero seleccionar una fila del listbox y utilizar los datos para luego en una macro poder utilizarlos en otro formulario.

He borrado algunos datos por lo de la Ley de Protección de Datos.

Lo que quiero es que al seleccionar esa fila guarde los datos en unas variables, por ejemplo el nombre y apellidos, la fecha_Entrega para luego utilizarlos.

¿Es posible?

2 respuestas

Respuesta
1

Sino los vas a usar de inmediato puedes guardar esos datos en otra hoja del Excel o bien si vas a abrir en ese momento otro formulario puedes ligar la información de ambos formularios por ejemplo en el segundo formulario usas una instrucción similar a esta, nombre y apellido son label con propiedad visible=false para que no se vean en el formulario

nombre=listbox1(fila,1)

apellido=listbox1(fila,2)

userform2.nombre=userform1.nombre

¡Gracias! Lo que no tengo claro es como sacar esa información de la fila del lixtbox que seleccionó al dar doble click. Puede ser buena idea guardar los valores en una hoja para utilizarlos luego.

Respuesta
1

'En el evento click del listbox, puedes obtener los datos del registro seleccionado
Por ejemplo, para almacenarlos en variables:

Private Sub ListBox1_Click()
    'con la propiedad listindex sabes cuál fila seleccionaste
    nom_ape = ListBox1.List(ListBox1.ListIndex, 0)
    f_entrega = ListBox1.List(ListBox1.ListIndex, 2)
End Sub

No es necesario almacenarlos en variables, si el form está activo y seleccionaste un registro del list, en cualquier momento puedes obtener los datos, por ejemplo, si presionas un botón:

Private Sub CommandButton1_Click()
    If ListBox1.ListIndex = -1 Then
        MsgBox "Selecciona un registro del list"
        Exit Sub
    End If
    nom_ape = ListBox1.List(ListBox1.ListIndex, 0)
    f_entrega = ListBox1.List(ListBox1.ListIndex, 2)
End Sub

En qué tipo de variables lo necesitas, o mejor dicho, cómo piensas utilizar más adelante?


.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

¡Gracias! Buenas Dante.

Creo que esto es Lo que buscaba. Voy a probar y te cuento. Adapto la idea y código al programa y explico cómo me ha ido.

Muchísimas gracias!!!

Moisés.

Avísame cualquier duda

.

'S aludos. Dante Amor. Recuerda valorar la respuesta

Ya me funciona. Copio los datos en una hoja para luego usarlo en otro subformulario.

Private Sub ListHistorico_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Application.ScreenUpdating = False
matricula_selec = form_buscarMATRICULA.BuscMatricula.Value
Sheets("Conductores").Range("J3:Q3").ClearContents
'asignamos los datos seleccionados a variables
nombre_selec = ListHistorico.List(ListHistorico.ListIndex, 0)
empresa_selec = ListHistorico.List(ListHistorico.ListIndex, 1)
fentrega_select = ListHistorico.List(ListHistorico.ListIndex, 2)
hentrega_selec = ListHistorico.List(ListHistorico.ListIndex, 3)
fdevolucion_selec = ListHistorico.List(ListHistorico.ListIndex, 4)
hdevolucion_selec = ListHistorico.List(ListHistorico.ListIndex, 5)
'lo enviamos a la hoja Conductores a partir de la columna J
Sheets("Conductores").Range("J3") = matricula_selec
Sheets("Conductores").Range("K3") = nombre_selec
Sheets("Conductores").Range("L3") = empresa_selec
Sheets("Conductores").Range("M3") = fentrega_select
Sheets("Conductores").Range("N3") = hentrega_selec
Sheets("Conductores").Range("O3") = fdevolucion_selec
Sheets("Conductores").Range("P3") = hdevolucion_selec
'fin
Sheets("PanelPrincipal").Select
End Sub

Muchísimas gracias!!

Moisés.

Hola Dante.

Siguiendo con este programa te explico. Ahora los datos del listbox los he guardado en una hoja del libro al darle doble click. Además se abre otro formulario donde cargó esas variables y puedo editarlas. En este otro formulario al darle a un botón modifica un registro de la tabla donde en el formulario anterior, el de la imagen, están los datos para cargar el listbox. Quisiera que ese formulario se refresque y actualice los datos del listbox. ¿Eso es posible? 

Gracias de antemano.

Si entendí bien, tienes los datos en el formulario(1), después quieres editar los datos en otro formulario(2) y se actualicen en el formulario(1) .

Sí, si es posible.

Ahora hay que poner el dato en la posición del list, por ejemplo:

ListHistorico.List(ListHistorico.ListIndex, 1) = empresa_selec
o
ListHistorico.List(ListHistorico.ListIndex, 1) = "dato nuevo"

Si necesitas más información, con todo gusto te ayudo. Crea una nueva pregunta por cada petición. En el desarrollo de la pregunta me explicas cómo cargaste los datos en el listhistorico.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas