Al correr mi macro se ejecuta en el mismo rango

Mire deseo hacer muchas tablas con el mismo formato, las macros las hago con la grabadora, no con VB, pero tengo un problema.
Las tablas están espaciadas cada 18 filas, comienzo en la fila 1, grabo mi macro, con mi formato, etc.
Pero cuando la quiero correr me posiciono en la fila 19, tecleo el ctrl +b, que así se llama mi macro y si corre, pero se regresa a la fila 1 y ahí corre en la fila 19 no me hace absolutamente nada.
Mi duda es si debo comenzar a grabarla desde la fila 1 y bajarme con las teclas de cursor para que grabe esas acciones, pero ya lo hice y tampoco pasa nada.
Gracias

1 respuesta

Respuesta
1
Podrías ser más específico en describir qué quieres que haga la macro (sume, reste, llene espacios, colores, etc...) para que te pueda ayudar
Si, de un libro externo copio los datos que consisten en 7 columnas y 16 filas, obviamente como las copio no tienen formato ni de ancho de columna ni de nada, una ves copiados los datos lo primero que hago es darle el ancho adecuado a la columna B que es la que queda muy angosta, después en la fila 1 le doy formato a los títulos, las hago negritas, las centro, las hago del 14(tamaño), cursivas, se lo hago a las columnas A B C, también relleno las celdasde color azul bajito con efectos de relleno.
Después encierro todo en un rectángulo y los contornos interiores de las celdas, el las celdas F16 va la leyenda suma y en la G16 va una fórmula que es la sumatoria en el rango (G2:G15) y eso es todo, ahí es cuando le pongo detener grabación de macro.
Ahora copio otros datos de mi libro externo y lo pego en la celda A19, dejo dos filas en blanco, una vez pegado, me posiciono en la celda A19 y le doy ctrl + b(así se llama mi macro), zaz, no hace nada, se ve que corre la macro, pero la veo y esta posicionado en la celda A1, y a mis datos de la celda A19 no les hizo absolutamente nada, la vuelvo a correr y hace lo mismo de allí no pasa, eso es todo gracias.
Efectivamente tu procedimiento está equivocado ya que al ocupar el grabador de macros, lo estás diseñando para un rango fijo, es decir, siempre va a hacer esas instrucciones en el mismo rango y como tu dices cuando lo quieres ejecutar en otro rango, aparentemente no hace nada, sin embargo, si lo hacer en el rango en que tu grabaste solo que como lo deja igual por eso ves que aparenemente no hace nada. La solución para tu problema es crear una macro que se adapte a cualquier rango, así que aquí lo tengo, lo que debes hacer es. Abres tu archivo a donde vas a ocupar la macro, presionas Alt+F11 juntos para abrir el editor de macros. Cuando veas la pantalla de código copias y pegas todas estas instruccones:
Sub rutina1()
'
' rutina Macro
' Macro para hacer una rutina repetitiva
'
        ActiveSheet.Select
        ActiveCell.Select
        ActiveCell.Offset(0, 1).Select
        Selection.EntireColumn.AutoFit
        ActiveCell.Offset(0, -1).Select
        Range(Selection, Selection.End(xlToRight)).Select
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        With Selection.Font
            .Size = 14
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
            .ThemeFont = xlThemeFontNone
            .Bold = True
            .Italic = True
       End With
       With Selection.Interior
        .ColorIndex = 34
        .Pattern = xlSolid
       End With
    ActiveCell.Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
     ActiveCell.Select
     While ActiveCell.Value <> ""
        ActiveCell.Offset(1, 0).Select '
    Wend
    fila1 = ActiveCell.Row
    ActiveCell.Offset(0, 5).Select
    ActiveCell.Value = "SUMA"
    Selection.Font.Bold = True
    ActiveCell.Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=SUM(R[-14]C:R[-1]C)"
End Sub
Cuando hayas terminado cierras el editor y te vas al archivo sobre el que estás trabajando, insertas una autoforma (la que quieras) y la dibujas sobre una parte de la pantalla (de preferencia donde no vayas a poner datos) cuando esté creada le das click derecho a la autoforma y eliges la opción "Asignar macro" te va a salir un cuadro de dialogo en le cual vas a ver lo que dice la primera fila del código (rutina1). Ahora ya tienes lista tu macro y tu elemento ejecutor. Bueno pues solamente copias tus lineas para trabajar y ESTO ES IMPORTANTÍSIMO, SIEMPRE PON TU CURSOR EN LA PRIMERA LINEA Y PRIMERA COLUMNA DEL RANGO A TRABAJAR, por ejemplo si tus datos comienzan en la columna A y la fila 1 tu cursor debe estar en la celda A1, si tus datos comienzan a partir de la columna J y la fila 1 tu cursor debe estar en la columna J1 y así sucesivamente, si no pones así el cursor la macro no funcionará correctamente. Ahora ya solo le das click izquierdo a la autoforma a la que le asignaste la macro y listo, tu macro hará todo lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas