Jump to content
viejo

ANSWERED ayuda con barra de progreso

Recommended Posts

muy buen dia tengan todos, solicito su valiosa colaboracion; seré directo pues se trata de un formulario que realiza busqueda en un tabla donde se selecciona la hoja y la columna donde buscar ya que he estado intentando ponerle una barra de progreso pero unicamente a traves de un label que va aumentando, no quiero usar un control adcional ya que luego en algunas computadores no tienen instalado el control de barra de progreso por lo tanto quiero usar un label, aqui mi plan es que mientras haga la busqueda ese label simule el porcentaje de aumento que vaya mostrando el avance de la busqueda, he aqui el codigo y no se como establecerlo con el label-barradeprogreso. de antemano les agradezco la atencion.

Sub buscar()


Dim i, nFilaFin

If ComboBox1.ListIndex = -1 Or ComboBox2.ListIndex = -1 Or txt_Buscarr = "" Then
   MsgBox "Seleccione una hoja, una columna y escriba un texto de busqueda", vbCritical, "Departamento de Finanzas"
   ListBox1.Clear
   txt_Buscarr.SetFocus
   Exit Sub
End If

ListBox1.Clear

btn_modificar.Enabled = False
Me.btn_cancelar.Enabled = False
btn_buscar.Enabled = False
Me.ListBox1.Locked = True


Dim rango As Variant
Set rango = Range("A" & Rows.Count).End(xlUp).Rows


For i = 2 To rango


   If LCase(Cells(i, ComboBox2.ListIndex + 1).Value) Like "*" & LCase(txt_Buscarr.Value) & "*" Then
      
      ListBox1.AddItem Cells(i, 1)
      ListBox1.List(ListBox1.ListCount - 1, 2) = Cells(i, 3)
'      ListBox1.List(ListBox1.ListCount - 1, 3) = Cells(i, 4)
      ListBox1.List(ListBox1.ListCount - 1, 3) = Cells(i, 8)
      'ListBox1.List(ListBox1.ListCount - 1, 4) = Cells(i, 5)
      'ListBox1.List(ListBox1.ListCount - 1, 5) = Cells(i, 6)
      ListBox1.List(ListBox1.ListCount - 1, 4) = i
   
   End If
   
   
   '------------------------------barra de progreso----------------------------------------------------
                    Dim porcentaje As Long

                    porcentaje = (100 / (rango / i))
                    Me.Label76.Width = 0
                    Me.Label76.Width = porcentaje
    '---------------------------------------------------------------------------------------------------

lblResultado.Caption = "Espere 1 minuto..."
DoEvents


Next i


txt_Buscarr.SelStart = 0
txt_Buscarr.SelLength = Len(txt_Buscarr.Text)

nFilaFin = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
lblResultado.Caption = ListBox1.ListCount & " Registros Encontrados de: " & nFilaFin - 1

btn_modificar.Enabled = True
Me.btn_cancelar.Enabled = True
btn_buscar.Enabled = True
Me.ListBox1.Locked = False


End Sub

 

Share this post


Link to post
Share on other sites

Mi Código:

Private Sub btn_Buscar_Click()
Dim uF&
uF = Range("A" & Rows.Count).End(xlUp).Row
If ComboBox1.ListIndex = -1 Or ComboBox2.ListIndex = -1 Or txt_Buscarr = "" Then
   MsgBox "Seleccione una hoja, una columna y escriba un texto de busqueda", vbCritical
   ListBox1.Clear
   txt_Buscarr.SetFocus
   Exit Sub
End If
ListBox1.Clear
Label5.Visible = True
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
   If LCase(Cells(i, ComboBox2.ListIndex + 1).Value) Like "*" & LCase(txt_Buscarr.Value) & "*" Then
      ListBox1.AddItem Cells(i, 1)
      ListBox1.List(ListBox1.ListCount - 1, 1) = Cells(i, 2)
      ListBox1.List(ListBox1.ListCount - 1, 2) = Cells(i, 3)
      ListBox1.List(ListBox1.ListCount - 1, 3) = Cells(i, 4)
      ListBox1.List(ListBox1.ListCount - 1, 4) = i
   End If
   Me.Label5.Width = Me.Label5.Width + 576 / uF
Next i
Label5.Visible = False
txt_Buscarr.SetFocus
txt_Buscarr.SelStart = 0
txt_Buscarr.SelLength = Len(txt_Buscarr.Text)
End Sub

Private Sub ComboBox1_Click()
Sheets(ComboBox1.Text).Select
ListBox1.Clear
txt_Buscarr.SetFocus
txt_Buscarr.SelStart = 0
txt_Buscarr.SelLength = Len(txt_Buscarr.Text)
End Sub

Private Sub ListBox1_Click()
Rows(ListBox1.List(ListBox1.ListIndex, 4)).Select
End Sub

Private Sub UserForm_Activate()
Dim i As Integer
For i = 1 To Sheets.Count: ComboBox1.AddItem Sheets(i).Name: Next i
ComboBox1 = ActiveSheet.Name
For i = 1 To 15: ComboBox2.AddItem Hoja1.Cells(1, i): Next
ComboBox2.ListIndex = 0
Label5.Visible = False
Me.Label5.Width = 0
txt_Buscarr.SetFocus
End Sub

 

Saludos

ComboboxSelectordeHojasycolumnas_conbarradeprogreso.xlsm

Share this post


Link to post
Share on other sites
Hace 3 minutos , Leopoldo Blancas dijo:

Hola antoni.... se me paso Poner al inicio de Form longitud 0 del Label, pero ya no me deja, subir otro archivo... ??? 

Y también hay que poner un DoEvents después de modificar la longitud del label👍

De F8 a F8 funciona, pero de corrido no.

Edited by Antoni

Share this post


Link to post
Share on other sites
Hace 3 minutos , Antoni dijo:

De F8 a F8 funciona, pero de corrido no.

Es que la búsqueda es tan rápida que se muestra, avanza y cuando termina se pone invisible... En tu barra de progreso se tarda mucho la búsqueda... 

Pero como VIEJO tiene 500 mil registros ahí si vera el avance...😂😂😂

 

Saludos.

Share this post


Link to post
Share on other sites

no funcion, ni con do events ni logro verlo con f8, tal vez estoy haciendo algo mal, seguire revisando

 

 

Edited by avalencia

Share this post


Link to post
Share on other sites

 

Creo que todo esta regresando a la normalidad: Corregido y aumentado...

Con Pocos registros no se vera la barra de progreso, pero hice una prueba con 300,000 registros y se ve lindo...😎

Saludos.

ComboboxSelectordeHojasycolumnas_conbarradeprogreso.xlsm

Edited by avalencia

Share this post


Link to post
Share on other sites

nuevamente gracias a todos, pero creo que me quedaré con lo que me es mas funcional; si bien es cierto las barras de progreso son una manera de visualizar lo que en ese momento esta haciendo el computador y proyectándolo al usuario pero también es una carga más para los registros de memoria haciéndolos mas lentos,  ya que sin barra de progreso en una hoja con 500mil registros buscar algo tardaba menos de 1 min, y al probar las aportaciones en dicha hoja en el caso de antoni tardaba poquito mas del minuto con barra de progreso, cosa que no es tanto y es soportable y no altera la pasciencia del usuario al estar esperando por contrario y en relacion a una hoja con mas de 500mil registros (como lo dijo leopoldo blancas) con su aporte que fue probado en dicha hoja tardó mas 4 minutos lo cual no me es funcional no se si lo lindo lo vuelva mas lento, por mi parte creo que la mejor barra de progreso y que va casi en funcion de la "velocidad" de la busqueda es el quinto post y aporte hecho por el maestro antoni, no quiere decir que el ultimo post hecho por leopoldo blanca sea malo de hecho es lindo como él lo expresó pero es mas lento de lo que deberia ser y esa parte no la vuelve funcional aun asi le agradezco ya que me ha dado unas ideas esenciales, pero para el caso de lo que estoy haciendo es mas que suficiente con la aportacion del maestro antoni y como siempre da en el clavo y quedo agradecido por ello.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.



×
×
  • Create New...

Important Information

Privacy Policy