Hora en listbox

Tengo un listbox en el cual tengo varias columnas como podría cambiar el formato de una de esas columnas para que se pueda ver la hora que yo coloco en lugar del valor en el listbox. Ejemplo 09:06:00 y asi aparece en el listbox 0.345666777 anexo código.

Esperando me puedan apoyar gracias ante todo.

Private Sub CommandButton5_Click()
On Error GoTo Errores
If Me.txtFiltro1.Value = "" Then Exit Sub
Me.ListBox1.Clear
j = 1
Filas = Range("a1").CurrentRegion.Rows.Count
For i = 2 To Filas
If LCase(Cells(i, j).Offset(0, 9).Value) Like "*" & LCase(Me.txtFiltro1.Value) & "*" Then
Me.ListBox1.AddItem Cells(i, j)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Cells(i, j).Offset(0, 1)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Cells(i, j).Offset(0, 2)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Cells(i, j).Offset(0, 3)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Cells(i, j).Offset(0, 4)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = Cells(i, j).Offset(0, 5)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = Cells(i, j).Offset(0, 6)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = Cells(i, j).Offset(0, 7)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 8) = Cells(i, j).Offset(0, 8)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 9) = Cells(i, j).Offset(0, 9)
Else
End If
Next i
Exit Sub
Errores:
MsgBox "No se encuentra.", vbExclamation, "Verifica selección"
End Sub

2 Respuestas

Respuesta
2

En la línea de la col con formato ajustala de este modo:

Suponiendo que sea la 2da col del listbox:

Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Format(Cells(i, j).Offset(0, 1), "hh:mm:ss")

De igual modo le podés asignar otros formatos a cada col de datos.

Sdos y no dejes la consulta sin finalizar.

Gracias por su respuesta le comento lo siguiente al realizar el cambio en el código ya no me aparece algún dato en el listbox (aparece todo en blanco)inclusive le coloque el time antes de la secuencia de "hh:mm:ss" y aun asi no aparecen los resultados.

Si regreso la secuencia a la anterior los datos vuelven aparecer en el listbox.

Public Sub CommandButton5_Click()
On Error GoTo Errores
If Me.txtFiltro1.Value = "" Then Exit Sub
Me.ListBox1.Clear
j = 1
Filas = Range("a1").CurrentRegion.Rows.Count
For i = 2 To Filas
If LCase(Cells(i, j).Offset(0, 9).Value) Like "*" & LCase(Me.txtFiltro1.Value) & "*" Then
Me.ListBox1.AddItem Cells(i, j)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Format(Cells(i, j).Offset(0, 1), "hh:mm:ss")
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Cells(i, j).Offset(0, 2)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Cells(i, j).Offset(0, 3)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Cells(i, j).Offset(0, 4)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = Cells(i, j).Offset(0, 5)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = Cells(i, j).Offset(0, 6)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = Cells(i, j).Offset(0, 7)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 8) = Cells(i, j).Offset(0, 8)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 9) = Cells(i, j).Offset(0, 9)
Else
End If
Next i
Exit Sub
Errores:
MsgBox "No se encuentra.", vbExclamation, "EXCELeINFO"
End Sub

En espera de su ayuda.

Si observas cómo te quedó la línea modificada llena de espacios notarás porqué no la reconoce.

En mi respuesta también se ve con muchos espacios, pero es una falla del copy-paste de este espacio... debes mantener la misma instrucción que tenías solo que colocándole el Format:

A ver si ahora se ve mejor:

Format(Cells(i, j).Offset(0,1),"hh:mm:ss")


Sdos

Elsa


gracias nuevamente le comento que al realizarlo sin los espacios y redactando la secuencia aun asi sigue con el mismo error y no me aparece algún dato en el listbox (aparece en blanco) Le anexo todo mi código completo desde el listbox hasta el commandbutton esto para verificar si omití algún detalle al realizarlo.

Aunque esto no debería pasar ya que se esta cambiando el valor de una sola columna para que se muestre en formato de horas.

'Mostrar resultado en ListBox
Public Sub CommandButton5_Click()
On Error GoTo Errores
If Me.txtFiltro1.Value = "" Then Exit Sub
Me.ListBox1.Clear
j = 1
Filas = Range("a1").CurrentRegion.Rows.Count
For i = 2 To Filas
If LCase(Cells(i, j).Offset(0, 9).Value) Like "*" & LCase(Me.txtFiltro1.Value) & "*" Then
Me.ListBox1.AddItem Cells(i, j)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Format(Cells(i, j).Offset(0, 1), "hh:mm:ss")
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Cells(i, j).Offset(0, 2)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Cells(i, j).Offset(0, 3)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Cells(i, j).Offset(0, 4)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = Cells(i, j).Offset(0, 5)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = Cells(i, j).Offset(0, 6)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = Cells(i, j).Offset(0, 7)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 8) = Cells(i, j).Offset(0, 8)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 9) = Cells(i, j).Offset(0, 9)
Else
End If
Next i
Exit Sub
Errores:
MsgBox "No se encuentra.", vbExclamation, "Validar información"
End Sub
'
'Activar la celda del registro elegido
Private Sub ListBox1_Click()
Range("a2").Activate
Cuenta = Me.ListBox1.ListCount
Set Rango = Range("A1").CurrentRegion
For i = 0 To Cuenta - 1
If Me.ListBox1.Selected(i) Then
Valor = Me.ListBox1.List(i)
Rango.Find(What:=Valor, LookAt:=xlWhole, After:=ActiveCell).Activate
End If
Next i
End Sub
'
'Dar formato al ListBox y traer datos de la tabla
Private Sub UserForm_Initialize()
For i = 1 To 10
Me.Controls("Label" & i) = Cells(1, i).Value
Next i
With ListBox1
.ColumnCount = 10
.ColumnWidths = "22 pt;40 pt;50 pt;62 pt;60 pt;112 pt;93 pt;170 pt;160 pt;20 pt"
End With
End Sub

Esperando de su ayuda.

Enviame el formulario en alguna hoja de ejemplo donde tenga datos la col de horas... No tiene ningún sentido lo que me comentas así que mejor lo miro en el modelo.

Quizás lo que en la hoja ves como horas en realidad es texto que 'parece' horas... y x esa razón no puede asignarle ese formato y queda vacío.

Podes copiar el correo que aparece en lla barra de navegación de mi sitio que dejo al pie, o dejame un correo tuyo para solicitártelo.

Gracias te envíe el ejemplo al correo indicado en la pagina que indicas.

y nuevamente agradezco el apoyo.

Me confirmas si llego el archivo por favor.

Saludos,

El archivo llegó y ya salió con el ajuste. Sdos!

Respuesta

También tarde un rato en encontrar la solución para este problemilla, lo solucione de la siguiente manera:

'Mostrar Movimientos
items = Hoja3.Range("registros").CurrentRegion.Rows.Count
For i = 2 To items
If Hoja3.Cells(i, 1).Value Like Me.ComboBox1.Text Then
Me.ListBox2.AddItem Hoja3.Cells(i, 2)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 1) = Hoja3.Cells(i, 4)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 2) = Hoja3.Cells(i, 5)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 3) = Hoja3.Cells(i, 6)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 4) = Hoja3.Cells(i, 7)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 5) = Hoja3.Cells(i, 8)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 6) = Hoja3.Cells(i, 3)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 7) = Format(Hoja3.Cells(i, 10), "h:mm:ss am/pm")
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 8) = Hoja3.Cells(i, 9)
End If
Next i'Mostrar Movimientos
items = Hoja3.Range("registros").CurrentRegion.Rows.Count
For i = 2 To items
If Hoja3.Cells(i, 1).Value Like Me.ComboBox1.Text Then
Me.ListBox2.AddItem Hoja3.Cells(i, 2)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 1) = Hoja3.Cells(i, 4)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 2) = Hoja3.Cells(i, 5)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 3) = Hoja3.Cells(i, 6)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 4) = Hoja3.Cells(i, 7)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 5) = Hoja3.Cells(i, 8)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 6) = Hoja3.Cells(i, 3)
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 7) = Format(Hoja3.Cells(i, 10), "h:mm:ss am/pm")
Me.ListBox2.List(Me.ListBox2.ListCount - 1, 8) = Hoja3.Cells(i, 9)
End If
Next i

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas