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
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.