Jump to content

Bucle FOR NEXT demasiado lento


Recommended Posts

Hola a todos.

Os pido ayuda con este proyecto que estoy haciendo. Tal y como lo tengo ya me funciona, pero veo que tarda en recorrer demasiado las filas, creo que porque estoy usando FOR NEXT. No se si hay manera de hacerlo correr más rápido, con WHILE por ejemplo o de otra manera. Os envío el proyecto y os agradezco si me podéis ayudar porque no veo capaz.

El problema viene en la hoja Plantilla_Parte_KM, cuando uso los botones para recorrer las matrículas, la busca en una hoja con este bucle. Si la encuentra pronto no hay problema, pero si no la encuentra o está lejos en el contador del bucle se hace lento.

Como siempre gracias de antemano.

Moisés.

 

Plantilla PARTE KM (v.1).xlsm

Link to post
Share on other sites
En 28/11/2020 at 3:09 , Pirtrafilla dijo:

Si la encuentra pronto no hay problema, pero si no la encuentra o está lejos en el contador del bucle se hace lento.

No me extraña, tienes un bucle para 1200 filas de las que el 99% están vacías... :wacko:

Con un Find te sobra. Pr cierto, si trabajas sobre la hoja activa, no hace falta para nada el "With ActiveSheet". En todo caso úsalo para trabajar sobre las otras ·With Sheets("KM_diarios)"

Copia de Plantilla PARTE KM (v.1).xlsm

Link to post
Share on other sites

@Haplox, gracias por tu aporte. Tendré en cuenta lo que me dices, 

Muchas gracias por tu código.

'--> Macro por Haplo - 29/11/2020 <--
Sub BuscarMatricula()
Dim buscar$, uFila&, matricula As Range, s&

buscar = Range("B8")
uFila = Sheets("KM_diarios").Range("A" & Rows.Count).End(xlUp).Row

Set matricula = Sheets("KM_diarios").Range("A1:A" & uFila).Find(buscar)
    If Not matricula Is Nothing Then
        Range("B13:G43").ClearContents
 
        Prdia = matricula.Offset(, 3)
        km = matricula.Offset(, 4)
        conductor = matricula.Offset(, 2) & ", " & Mid(matricula.Offset(, 1), 6, 20)
        Range("G" & Prdia + 12) = km
        Range("F" & Prdia + 12) = Range("F10")
        Range("B" & Prdia + 12) = conductor
        sFila = matricula.End(xlDown).Row
        lectura = Range("F10")

        For s = matricula.Row + 1 To sFila - 1
            km = Sheets("KM_diarios").Range("E" & s)
            dia = Sheets("KM_diarios").Range("D" & s)
            Range("G" & dia + 12) = km
            Range("F" & dia + 12) = lectura + km
            lectura = Range("F" & dia + 12)
            Range("B" & dia + 12) = conductor
        Next s
    Else
        MsgBox "La matrícula " & buscar & " no tiene kilometros diarios"
    End If
End Sub

 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Crear macros Excel

  • Posts

    • Hola estimados amigos de ayuda excel quisiera pedirles de favor me ayuden con el siguiente problema: Tengo en la celda a1 de la hoja 1 un texto que puede ser mas largo eso no importa, he colocado un botón con un código que al presionar separa el texto en varias líneas pero el problema es que sustituye el contenido de la celda a1 de la hoja 1, me interesaría que la celda a1 de la hoja 1 quede intacta con la información que se muestra inicialmente y más bien que al presionar el botón del formulario se pueda copiar el contenido a la hoja 2 ahí si me interesa que se separe en líneas como actualmente lo hace, el código trabaja, pero, lo que quiero es que NO sustituya el código de la hoja1 esta información debe mantenerse ya que en el programa que trabajo actualmente se extrae esta información a un formulario, todo este texto, y ustedes comprenderán que al separarse me va a leer solo la primera linea y eso es lo que no quiero, por el contrario el texto separado en lineas necesito que vaya a la hoja2 ya que posteriormente colocare un botón para poder imprimir esa información separada en lineas considerando un rango determinado de celdas que podrian ser desde la a1:a20 , les adjunto el ejemplo para que por favor me colaboren...muchas gracias. Ayuda Copiar texto en Hoja 2.xlsm
    • te parece si adjuntas (una copia RE-DU-CI-DA de) TU modelo (EN archivo "de excel") ? solo asegura que se reproduce el comportamiento que describes
    • Ya los revise es por por que lo oculto el robbin, con otros codigos de vista de impresión suceden lo mismo.
    • la prueba hecha es con la cinta oculta y ejecutando (solamente)... y ya sea que pulse "atrás" o "esc" o mande la impresión, al regresar a la interfaz de usuario la cinta sigue oculta probablemente sea por otras instrucciones en otras partes de tus códigos ?
    • Ni cuenta me di que estaba en Word pero el problema es en Excel.
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy