Mi macro no funciona

¿Hola cómo estas?
Mira tengo esta macro
Sub concilia()
Range("a12").Select
For i = 1 To 500
If ActiveCell = "PROGRAMA NVO.DE SURTIMIENTO GARANTIZADO " Then
celda = ActiveCell.Address
Selection.EntireRow.Copy
Sheets("hoja1").Select
           Range("A2000").End(xlUp).Offset(5, 0).Select
            ActiveSheet.Paste
 End If
ActiveCell.Offset(1, 0).Select
Next
Application.CutCopyMode = False
End Sub
Lo que quiero que haga es que busque en la columna "a" a partir de la fila doce esto PROGRAMA NVO.DE SURTIMIENTO GARANTIZADO si contiene este dato, que copie toda la fila y valla 5 filas más abajo de donde se encuentra el ultimo dato y comience a pegar ahí los datos, el problema es que lo pega y empieza a buscar a partir de donde pego y obvio todas las celdas están vacías.
La otra cosa que quiero preguntar es si no hay una forma de especificar en lugar de for i = 1 to 500 algo que finalice cuando encuentre la primera celda vacía
Gracias y Saludos

1 respuesta

Respuesta
1
Definitivamente tu código tiene errores y por eso no hace lo que quieres, con mucho gusto te ayudo, solo explicame bien qué quieres hacer, así que olvidate del código que tienes y dame detalles de lo que quieres hacer. Por lo que entendí quieres hacer esto:
En una hoja tienes una base de datos y a partir de la celda ("A12") empieza a buscar y si encuentra una celda que tenga "PROGRAMA NVO.DE SURTIMIENTO GARANTIZADO" selecciona toda la fila y la copia a otra hoja (me imagino que hace ser la hoja2) y la pega inmediatamente abajo de la última fila que esté ocupada y así sucesivamente hasta que termine de recorrer todas las filas que estén ocupadas en la columna A ¿es correcta mi apreciación? De lo contrario especifícame bien qué es lo que necesitas.
Casi casi perfecta pero no, no lo pega en otra hoja, has de cuenta que lo que yo tengo es esto:
Columna A Columna B
10 DE MAYO 2 5,856.30
Programa nvo.de surtimiento garantizado 24 128,545.12
g de f.delegación Miguel hidalgo 2 15.33 anasvo 3 5,998.54 estancia de bienestar infantil no. 17 3 42,291.17
Pero como con 600 registros y más columnas, nunca van a ser los mismos registros, pueden ser 300 o 1000 no se eso cambia, lo que quiero así como entendiste, es que busque si la columna "a" dice:PROGRAMA NVO.DE SURTIMIENTO GARANTIZADO, si es así, valla 5 celdas más abajo del ultimo registro de la columna "A" y empiece a pegar ahí, y así asta el ultmo registro, pero todo dentro de la misma hoja, ahora si pudiera ser que en lugar de copiarlos los cortara y después los pegara seria genial.
Gracias por tu pronta respuesta!
Saludos
Ah ok ahora si ya te entendí, mira aquí hice un código diferente que hace exactamente lo que quieres y no solo copia las filas sino que las corta y las pega como las necesitas, solo te aclaro dos puntos importantes para que funcione a la perfección esta macro, uno: el valor en la celda debe aparecer exactamente como está en el código PROGRAMA NVO. DE SURTIMIENTO GARANTIZADO con mayúsculas y punto, y dos: en la columna A antes de correr la macro no debe haber columnas en blanco dentro de la base de datos donde va a buscar los datos. Si estas condiciones se cumplen no tendrás problema alguno, aquí te dejo el nuevo código.
Sub acomdar_filas()
    Range("A65536").End(xlUp).Offset(5, 0).Select
    posicion = ActiveCell.Address
    Range("A12").Select
    Do While ActiveCell.Value <> ""
        posicion2 = ActiveCell.Address
        If ActiveCell.Value = "PROGRAMA NVO.DE SURTIMIENTO GARANTIZADO" Then
            ActiveCell.EntireRow.Copy
            Range(posicion).Select
            Do While ActiveCell.Value <> ""
                ActiveCell.Offset(1, 0).Select
            Loop
            ActiveSheet.Paste
            Application.CutCopyMode = False
            Range(posicion2).Select
            ActiveCell.EntireRow.Delete
        Else
        ActiveCell.Offset(1, 0).Select
        End If
    Loop
End Sub
Por favor no olvides calificar y cerrar la pregunta, es nuestro aliciente para seguir ayudando
quedo mas que listo!!!! ahora solo tengo una pequeña pregunta mas para el principio de mi macro
lo que hace es abrir un archivo nuevo eso lo hace bien jejeje (facil), pero como le digo que me aparezca el dialogo de guardar como, y seguir usando ese nuevo archivo pero sin tener que especificar su nombre en la macro, porque el nombre de este archivo siempre cambia, lo intente asi
x = Application.GetSaveAsFilename.Execute
Set gerencia1 = Workbooks.Open(Filename:=x)
Pero nomas no
Gracias y saludos
Ahora soy yo el que te pide un favor
En 1er. Lugar nosotros damos una respuesta por una pregunta, yo ya lo hice así es que te pido de favor cierres esta pregunta y me lances una nueva pregunta con tu inquietud.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas