Cargar ListBox desde excel
Publicado por Dionner (6 intervenciones) el 10/08/2019 19:04:55
Hola que tal, espero que se encuentre bien, la razón por la cual escribo es para solicitar apoyo ante un problema que me tiene
desde hace días sin dormir, tal vez sea una solución muy sencilla pero como me estoy iniciando en la programación en VB
no he podido darle solución. espero me pueda ayudar.
estoy trabajando un formulario de busqueda cuyo parametro a buscar es la cedulda de indentidad o DNI una vez que lo introduzco
la aplicación me hace el recorrido hasta encontrar las coincidencias, allí empiezo a pasar las filas que poseen la coincidencia
a un listBox la idea es pasar todo el registro de ese campo pero cuando lo paso simplemente el primer dato no empieza en la columna
que debe sino en la siguiente (si debe aparecer en lafila 1 Columna A aparece en la fila 1 columna B) y el siguiente dato de ese regoistro
apararece en la siguiente (es decir en la columna C) pero en la fila 2. aunado a ello no puedo mostrar las 23 columnas que posee la tabla
envio el codigo que muy rudimentariamente he generado con la finalidad de solicitarle que haga una revisión y sugerencias de lo que deba
ser modificado a fin de poder mejorar mi aplicación. agradezco de antemano toda la colaboraación que me pueda prestar para darle solución
a mi problema y poder dormir placidamente MIL GRACIAS
Private Sub CommandButton1_Click()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
On Error Resume Next
Me.ListBox1.Clear
Me.ListBox1.RowSource = Clear 'Previamente defini la propiedad RowSource="TAbla" con un total de 23
Me.ListBox1.ColumnHeads = True
band = 0 'Bandera de Control
If TextBox1.Text = "" Then
MsgBox ("Debe Ingresar el numero de cedula")
Else
'Nos situamos en la celda con el primer dato
Range("A1").Select
'Bajamos hasta la ultima fila adyacente, que contenga datos
Selection.End(xlDown).Select
'Mostramos el numero de lineas
lineas = ActiveCell.Row
celda = "" 'Agregamos una variable de comparacion inicializada enn vacio
For i = 2 To lineas + 1 'Hacemos el cilo hasta un espacio despues del ultimo
celda = Cells(i, 11).Value 'Tomamos el el primer valor a comparar
If Cells(i, 1) <> "" Then 'en este caso la busqueda es por cedula
If celda = TextBox1.Text Then
For j = 0 To 22 'si la comparacion coincide recorremos toda la fila
Me.ListBox1.AddItem 'para agregar elementos en el ListBox1
Me.ListBox1.List(ListBox1.ListCount - 2, j) = Cells(i, j).Value
Next
band = 1 'Se Activa si hay coincidencias
End If
End If
Next
If IsEmpty(celda) And band = 0 Then 'Si Llergo al final y no hay coincidencias no se encontro ningun elemento
MsgBox "No se ha encontrado el texto a buscar"
End If
End If
End Sub
desde hace días sin dormir, tal vez sea una solución muy sencilla pero como me estoy iniciando en la programación en VB
no he podido darle solución. espero me pueda ayudar.
estoy trabajando un formulario de busqueda cuyo parametro a buscar es la cedulda de indentidad o DNI una vez que lo introduzco
la aplicación me hace el recorrido hasta encontrar las coincidencias, allí empiezo a pasar las filas que poseen la coincidencia
a un listBox la idea es pasar todo el registro de ese campo pero cuando lo paso simplemente el primer dato no empieza en la columna
que debe sino en la siguiente (si debe aparecer en lafila 1 Columna A aparece en la fila 1 columna B) y el siguiente dato de ese regoistro
apararece en la siguiente (es decir en la columna C) pero en la fila 2. aunado a ello no puedo mostrar las 23 columnas que posee la tabla
envio el codigo que muy rudimentariamente he generado con la finalidad de solicitarle que haga una revisión y sugerencias de lo que deba
ser modificado a fin de poder mejorar mi aplicación. agradezco de antemano toda la colaboraación que me pueda prestar para darle solución
a mi problema y poder dormir placidamente MIL GRACIAS
Private Sub CommandButton1_Click()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
On Error Resume Next
Me.ListBox1.Clear
Me.ListBox1.RowSource = Clear 'Previamente defini la propiedad RowSource="TAbla" con un total de 23
Me.ListBox1.ColumnHeads = True
band = 0 'Bandera de Control
If TextBox1.Text = "" Then
MsgBox ("Debe Ingresar el numero de cedula")
Else
'Nos situamos en la celda con el primer dato
Range("A1").Select
'Bajamos hasta la ultima fila adyacente, que contenga datos
Selection.End(xlDown).Select
'Mostramos el numero de lineas
lineas = ActiveCell.Row
celda = "" 'Agregamos una variable de comparacion inicializada enn vacio
For i = 2 To lineas + 1 'Hacemos el cilo hasta un espacio despues del ultimo
celda = Cells(i, 11).Value 'Tomamos el el primer valor a comparar
If Cells(i, 1) <> "" Then 'en este caso la busqueda es por cedula
If celda = TextBox1.Text Then
For j = 0 To 22 'si la comparacion coincide recorremos toda la fila
Me.ListBox1.AddItem 'para agregar elementos en el ListBox1
Me.ListBox1.List(ListBox1.ListCount - 2, j) = Cells(i, j).Value
Next
band = 1 'Se Activa si hay coincidencias
End If
End If
Next
If IsEmpty(celda) And band = 0 Then 'Si Llergo al final y no hay coincidencias no se encontro ningun elemento
MsgBox "No se ha encontrado el texto a buscar"
End If
End If
End Sub
Valora esta pregunta


0